{"version":3,"file":"public-CddoRQNP.js","sources":["../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/embedo/embedo.js"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1\n * @license MIT\n */\n\n'use strict';\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else if (root) {\n root.Embedo = window.Embedo = factory();\n }\n})(this, function () {\n /**\n * @class Embedo Prototype\n *\n * @param {object} options Initialize options.\n */\n function Embedo(options) {\n this.options = options || Embedo.defaults.OPTIONS;\n this.requests = [];\n this.events = [];\n\n this.init(this.options);\n\n return this;\n }\n\n /**\n * @constant\n * Embedo defaults\n *\n * @description Embedo defaults contains basic configuration and values required to build internal engine.\n */\n Object.defineProperty(Embedo, 'defaults', {\n value: {\n OPTIONS: {\n facebook: null,\n twitter: false,\n instagram: false,\n pinterest: false\n },\n SOURCES: {\n facebook: {\n GLOBAL: 'FB',\n SDK: '//connect.facebook.net/${locale}/sdk.js',\n oEmbed: '//graph.facebook.com/${version}/oembed_${type}',\n REGEX: /(?:(?:http|https):\\/\\/)?(?:www.)?facebook.com\\/(?:(?:\\w)*#!\\/)?(?:pages\\/)?([\\w\\-]*)?/g,\n PARAMS: {\n version: 'v3.2',\n cookie: true,\n appId: null,\n access_token: null\n }\n },\n twitter: {\n GLOBAL: 'twttr',\n SDK: '//platform.twitter.com/widgets.js',\n oEmbed: '//publish.twitter.com/oembed',\n REGEX: /^http[s]*:\\/\\/[www.]*twitter(\\.[a-z]+).*/i,\n PARAMS: {}\n },\n instagram: {\n GLOBAL: 'instgrm',\n SDK: '//www.instagram.com/embed.js',\n oEmbed: '//graph.facebook.com/${version}/instagram_oembed',\n REGEX: /(http|https)?:\\/\\/(www\\.)?instagram.com\\/p\\/[a-zA-Z0-9_\\/\\?\\-\\=]+/gi,\n PARAMS: {\n version: 'v8.0',\n access_token: null\n }\n },\n youtube: {\n GLOBAL: null,\n SDK: null,\n oEmbed: '//www.youtube.com/embed/',\n REGEX: /^(?:(?:https?:)?\\/\\/)?(?:www\\.)?(?:m\\.)?(?:youtu(?:be)?\\.com\\/(?:v\\/|embed\\/|watch(?:\\/|\\?v=))|youtu\\.be\\/)((?:\\w|-){11})(?:\\S+)?$/,\n PARAMS: null\n },\n pinterest: {\n GLOBAL: 'PinUtils',\n SDK: '//assets.pinterest.com/js/pinit.js',\n oEmbed: null,\n REGEX: /(https?:\\/\\/(ww.)?)?pinterest(\\.[a-z]+).*/i,\n PARAMS: {}\n },\n vimeo: {\n GLOBAL: null,\n SDK: null,\n oEmbed: '//vimeo.com/api/oembed.json',\n REGEX: /(http|https)?:\\/\\/(www\\.)?vimeo(\\.[a-z]+)\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|)(\\d+)(?:|\\/\\?)/,\n PARAMS: {}\n },\n github: {\n GLOBAL: null,\n SDK: null,\n oEmbed: null,\n REGEX: /(http|https):\\/\\/gist\\.github\\.com\\/(\\w+)\\/(\\w+)/,\n PARAMS: {}\n },\n soundcloud: {\n GLOBAL: null,\n SDK: null,\n oEmbed: '//soundcloud.com/oembed',\n REGEX: /^(http|https):\\/\\/soundcloud\\.com\\/(\\w+)\\/.*$/,\n PARAMS: {}\n }\n },\n RESTRICTED: ['url', 'strict', 'height', 'width', 'centerize', 'jsonp']\n },\n writable: false,\n enumerable: true,\n configurable: false\n });\n\n // Application Logger\n Object.defineProperty(Embedo, 'log', {\n value: function log(type) {\n if (!Embedo.debug) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console[type] !== 'undefined') {\n console[type].apply(console, Array.prototype.slice.call(arguments, 1));\n }\n },\n writable: false,\n enumerable: true,\n configurable: false\n });\n\n // Plugins Loader\n Object.defineProperty(Embedo, 'plugins', {\n value: function load(plugins) {\n if (!plugins) {\n return;\n }\n if (plugins instanceof Array) {\n plugins.forEach(function (plugin) {\n if (typeof plugin === 'function') {\n plugin(Embedo);\n }\n });\n } else if (plugins === 'fuction') {\n plugins(Embedo);\n }\n },\n writable: false,\n enumerable: true,\n configurable: false\n });\n\n /**\n * Helper utlities\n * @method utils\n *\n * @private\n */\n Object.defineProperty(Embedo, 'utils', {\n value: Object.create({\n /**\n * @function uuid\n */\n uuid: function uuid() {\n var primary = (Math.random() * 0x10000) | 0;\n var secondary = (Math.random() * 0x10000) | 0;\n primary = ('000' + primary.toString(36)).slice(-3);\n secondary = ('000' + secondary.toString(36)).slice(-3);\n return 'embedo_' + primary + secondary;\n },\n\n /**\n * @function extend\n * @returns {object}\n */\n extend: function extend(obj) {\n obj = obj || {};\n for (var i = 1; i < arguments.length; i++) {\n if (!arguments[i]) {\n continue;\n }\n for (var key in arguments[i]) {\n if (arguments[i].hasOwnProperty(key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n return obj;\n },\n\n /**\n * @function merge\n *\n * @param {object} destination\n * @param {object} source\n * @param {array} preserve\n * @returns\n */\n merge: function merge(destination, source, preserve) {\n preserve = preserve || [];\n\n for (var property in source) {\n if (preserve.indexOf(property) === -1) {\n destination[property] = source[property];\n }\n }\n\n return destination;\n },\n\n /**\n * @func sequencer\n * Breaks down array into sequencer\n *\n * @param {Array} array\n * @param {Number} size\n * @returns\n */\n sequencer: function sequencer() {\n var args = arguments;\n return {\n then: function (done) {\n var counter = 0;\n for (var i = 0; i < args.length; i++) {\n args[i](callme);\n }\n\n function callme() {\n counter++;\n if (counter === args.length) {\n done();\n }\n }\n }\n };\n },\n\n /**\n * @func replacer\n * Replaces ${entity} with object key/value pair\n *\n * @param {string} str\n * @param {object} obj\n */\n replacer: function replacer(str, obj) {\n if (!str || !obj) {\n return;\n }\n if (obj) {\n for (var key in obj) {\n if (str) {\n str = str.split('${' + key + '}').join(obj[key]);\n }\n }\n }\n return str;\n },\n\n /**\n * @func observer\n *\n * Deferred Implementation for Object\n */\n observer: (function () {\n function Deferred() {\n this.resolved = [];\n this.rejected = [];\n }\n Deferred.prototype = {\n execute: function (list, args) {\n var i = list.length;\n args = Array.prototype.slice.call(args);\n while (i--) {\n list[i].apply(null, args);\n }\n },\n resolve: function () {\n this.execute(this.resolved, arguments);\n },\n reject: function () {\n this.execute(this.rejected, arguments);\n },\n done: function (callback) {\n this.resolved.push(callback);\n return this;\n },\n fail: function (callback) {\n this.rejected.push(callback);\n return this;\n }\n };\n return Deferred;\n })(),\n\n camelToSnake: function camelToSnake(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n },\n\n /**\n * @function validateURL\n *\n * @param {string} url\n * @returns\n */\n validateURL: function validateURL(url) {\n return /(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/.test(url);\n },\n\n /**\n * @function generateElement\n * Generates DOM element\n *\n * @param {string} source\n * @param {object} attributes\n * @param {string} html\n * @returns HTMLElement\n */\n generateElement: function generateElement(type, attributes, html) {\n var el = document.createElement(type);\n Object.keys(attributes || {}).forEach(function (type) {\n el.setAttribute(type, attributes[type]);\n });\n if (html) {\n el.innerHTML = html;\n }\n return el;\n },\n\n /**\n * @function generateEmbed\n * Generates Embed Container\n *\n * @param {string} source\n * @param {string} html\n * @returns\n */\n generateEmbed: function generateEmbed(id, source, html) {\n id = id || Embedo.utils.uuid();\n var container = document.createElement('div');\n\n container.setAttribute('id', id);\n container.setAttribute('data-embedo-id', id);\n container.setAttribute('data-embedo-source', source);\n\n if (Embedo.utils.validateElement(html)) {\n container.appendChild(html);\n } else {\n container.innerHTML = html || '';\n }\n\n return container;\n },\n\n /**\n * @function generateScript\n * Generates script tag element\n *\n * @param {string} source\n * @returns HTMLElement\n */\n generateScript: function generateScript(source) {\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = encodeURI(source);\n script.setAttribute('async', '');\n script.setAttribute('charset', 'utf-8');\n return script;\n },\n\n /**\n * @function validateElement\n * Validates if passed argument is valid DOM element\n *\n * @param {object} obj\n * @returns HTMLElement\n */\n validateElement: function validateElement(obj) {\n return typeof HTMLElement === 'object'\n ? obj instanceof window.HTMLElement\n : obj &&\n typeof obj === 'object' &&\n obj !== null &&\n obj.nodeType === 1 &&\n typeof obj.nodeName === 'string';\n },\n\n /**\n * @function sdkReady\n * Checks when SDK global object is ready\n *\n * @param {string} type\n * @param {function} callback\n */\n sdkReady: function sdkReady(type, callback) {\n callback = callback || function () {};\n if (!Embedo.defaults.SOURCES[type]) {\n return callback(new Error('unsupported_sdk_type'));\n }\n var counter = 0;\n (function check() {\n counter++;\n if (counter > 15) {\n return callback(new Error(type + ':sdk_not_available'));\n }\n if (window[Embedo.defaults.SOURCES[type].GLOBAL]) {\n return callback(null, window[Embedo.defaults.SOURCES[type].GLOBAL]);\n }\n setTimeout(check, 10 * counter);\n })(type);\n },\n\n /**\n * @function querystring\n * Object to Query String\n *\n * @param {object} obj\n * @returns {string}\n */\n querystring: function querystring(obj) {\n var parts = [];\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n parts.push(encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]));\n }\n }\n\n return parts.join('&');\n },\n\n /**\n * @function fetch\n * JSONP XHR fetch\n *\n * @param {string} url\n * @param {object} options\n * @param {function} callback\n */\n fetch: function fetch(url, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n options.callback = options.callback || 'callback';\n var target = document.head || document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n var jsonpCallback = 'jsonp_' + Embedo.utils.uuid();\n url += (~url.indexOf('?') ? '&' : '?') + options.callback + '=' + encodeURIComponent(jsonpCallback);\n url = url.replace('?&', '?');\n\n window[jsonpCallback] = function (data) {\n clear(jsonpCallback, script);\n callback(null, data);\n };\n\n script.type = 'text/javascript';\n script.defer = true;\n script.charset = 'UTF-8';\n script.onerror = function (err) {\n clear(jsonpCallback, script);\n return callback(err);\n };\n target.appendChild(script);\n script.src = url;\n\n function clear(jsonpCallback, script) {\n try {\n delete window[jsonpCallback];\n } catch (e) {\n window[jsonpCallback] = undefined;\n }\n if (script) {\n target.removeChild(script);\n script = undefined;\n }\n }\n },\n\n /**\n * XHR HTTP Requests\n *\n * @param {string} url\n * @param {object} options\n * @param {Function} callback\n */\n ajax: function ajax(url, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n callback = callback || function () {};\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status >= 400) {\n return callback(new Error(xhr.responseText || xhr.statusText));\n }\n try {\n return callback(null, JSON.parse(xhr.responseText));\n } catch (e) {\n return callback(new Error('invalid_response'));\n }\n };\n xhr.onerror = function (err) {\n return callback(err);\n };\n xhr.open('GET', url);\n xhr.send();\n },\n\n /**\n * @function transform\n * Cross Browser CSS Transformation\n *\n * @param {HTMLElement} element\n * @param {string} props\n */\n transform: function transform(element, props) {\n if (!Embedo.utils.validateElement(element)) {\n return;\n }\n element.style.webkitTransform = props;\n element.style.MozTransform = props;\n element.style.msTransform = props;\n element.style.OTransform = props;\n element.style.transform = props;\n },\n\n /**\n * @function compute\n * Computes property value of HTMLElement\n *\n * @param {HTMLElement} el\n * @param {string} prop\n * @param {Boolean} stylesheet\n * @returns {Number}\n */\n compute: function compute(el, prop, is_computed) {\n if (!Embedo.utils.validateElement(el) || !prop) {\n return;\n }\n\n var bounds = el.getBoundingClientRect();\n var value = bounds[prop];\n\n if (is_computed || !value) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n value = document.defaultView.getComputedStyle(el, '').getPropertyValue(prop);\n } else if (el.currentStyle) {\n prop = prop.replace(/\\-(\\w)/g, function (m, p) {\n return p.toUpperCase();\n });\n value = el.currentStyle[prop];\n }\n }\n\n if (typeof value === 'string' && !/^\\d+(\\.\\d+)?%$/.test(value)) {\n value = value.replace(/[^\\d.-]/g, '');\n }\n\n return isNaN(Number(value)) ? value : Number(value);\n },\n\n /**\n * @method convertToPx\n * Calculates approximate pixel value for vw, vh or % values\n *\n * @implements relative_px\n * @implements percent_px\n */\n convertToPx: function convertToPx(el, prop, value) {\n if (!isNaN(Number(value))) {\n return Number(value);\n } else if (/^\\d+(\\.\\d+)?%$/.test(value)) {\n return percent_px(el, prop, value);\n } else if (value.match(/(vh|vw)/)) {\n var dimension = value.replace(/[0-9]/g, '');\n return relative_px(dimension, value);\n }\n\n // Converts vw or vh to PX\n function relative_px(type, value) {\n var w = window,\n d = document,\n e = d.documentElement,\n g = d.body,\n x = w.innerWidth || e.clientWidth || g.clientWidth,\n y = w.innerHeight || e.clientHeight || g.clientHeight;\n\n if (type === 'vw') {\n return (x * parseFloat(value)) / 100;\n } else if (type === 'vh') {\n return (y * parseFloat(value)) / 100;\n } else {\n return undefined;\n }\n }\n\n // Converts % to PX\n function percent_px(el, prop, percent) {\n var parent_width = Embedo.utils.compute(el.parentNode, prop, true);\n percent = parseFloat(percent);\n return parent_width * (percent / 100);\n }\n },\n\n /**\n * @function watcher\n *\n * @param {string} Identifer\n * @param {Function} Function to Trigger\n * @param {integer} timer\n *\n * @returns {Function}\n */\n watcher: function watcher(id, fn, timer) {\n window.EMBEDO_WATCHER = window.EMBEDO_WATCHER || {};\n window.EMBEDO_WATCHER[id] = window.EMBEDO_WATCHER[id] || {\n id: id,\n count: 0,\n request: null\n };\n\n if (window.EMBEDO_WATCHER[id].count > 0 && window.EMBEDO_WATCHER[id].request) {\n window.EMBEDO_WATCHER[id].count -= 1;\n clearTimeout(window.EMBEDO_WATCHER[id].request);\n }\n\n window.EMBEDO_WATCHER[id].count += 1;\n window.EMBEDO_WATCHER[id].request = setTimeout(function () {\n window.EMBEDO_WATCHER[id].count -= 1;\n if (window.EMBEDO_WATCHER[id].count === 0) {\n fn.call();\n }\n }, timer);\n\n return null;\n },\n\n /**\n * @function dimensions\n *\n * @param {HTMLElement} el\n * @param {string} width\n * @param {string} height\n *\n * @returns {object{width,height}}\n */\n dimensions: function dimensions(el, width, height) {\n var el_width = Embedo.utils.compute(el, 'width');\n width = width ? width : el_width > 0 ? el_width : Embedo.utils.compute(el.parentNode, 'width');\n height = height\n ? height\n : el_width > 0\n ? el_width / 1.5\n : Embedo.utils.compute(el.parentNode, 'height');\n return {\n width: width,\n height: height\n };\n },\n\n /**\n * @function centerize\n * Align an element center in relation to parent div\n *\n * @param {HTMLElement} parent_el\n * @param {HTMLElement} child_el\n * @param {object} options\n * @returns\n */\n centerize: function centerize(parent_el, child_el, options) {\n Embedo.log('info', 'centerize', parent_el, child_el, options);\n if (!Embedo.utils.validateElement(parent_el) || !Embedo.utils.validateElement(child_el)) {\n return;\n }\n options = options || {};\n\n if (options.width) {\n parent_el.style.width = options.width;\n parent_el.style.maxWidth = options.width;\n parent_el.style.marginLeft = 'auto';\n parent_el.style.marginRight = 'auto';\n }\n\n if (options.height) {\n parent_el.style.height = options.height;\n parent_el.style.maxHeight = options.height;\n }\n\n child_el.style.display = '-moz-box';\n child_el.style.display = '-ms-flexbox';\n child_el.style.display = '-webkit-flex';\n child_el.style.display = '-webkit-box';\n child_el.style.display = 'flex';\n child_el.style.textAlign = 'center';\n child_el.style['justify-content'] = 'center';\n child_el.style['align-items'] = 'center';\n child_el.style.margin = '0 auto';\n },\n\n /**\n * @function handleScriptValidation\n *\n * @param {string} url\n */\n handleScriptValidation: function handleScriptValidation(url) {\n if (!url) {\n return;\n }\n url = url.split('#')[0];\n var scripts = document.getElementsByTagName('script');\n for (var i = scripts.length; i--; ) {\n if (scripts[i].src === url) {\n return true;\n }\n }\n return false;\n }\n }),\n writable: false,\n enumerable: true,\n configurable: false\n });\n\n /**\n * Embedo Event Listeners\n * @private\n *\n * @implements on\n * @implements off\n * @implements emit\n */\n Object.defineProperties(Embedo.prototype, {\n on: {\n value: function (event, listener) {\n if (typeof this.events[event] !== 'object') {\n this.events[event] = [];\n }\n this.events[event].push(listener);\n },\n writable: false,\n configurable: false\n },\n off: {\n value: function (event, listener) {\n var index;\n if (typeof this.events[event] === 'object') {\n index = this.events[event].indexOf(listener);\n if (index > -1) {\n this.events[event].splice(index, 1);\n }\n }\n },\n writable: false,\n configurable: false\n },\n emit: {\n value: function (event) {\n var i,\n listeners,\n length,\n args = [].slice.call(arguments, 1);\n if (typeof this.events[event] === 'object') {\n listeners = this.events[event].slice();\n length = listeners.length;\n\n for (i = 0; i < length; i++) {\n listeners[i].apply(this, args);\n }\n }\n },\n writable: false,\n configurable: false\n },\n once: {\n value: function (event, listener) {\n this.on(event, function g() {\n this.off(event, g);\n listener.apply(this, arguments);\n });\n },\n writable: false,\n configurable: false\n }\n });\n\n /**\n * @method init\n * Primary Embedo initialization\n *\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.init = function (options) {\n Embedo.log('info', 'init', this.requests, options);\n\n // Append enabled SDKs to DOM\n Object.keys(Embedo.defaults.SOURCES).forEach(function (source) {\n if (Embedo.defaults.SOURCES[source].SDK) {\n appendSDK(source, options[source]);\n }\n });\n\n this.domify();\n\n /**\n * @func appendSDK\n * Injects SDK's to body\n * @private\n *\n * @param {*} type\n * @param {*} props\n */\n function appendSDK(type, props) {\n if (!type || !props) {\n return;\n }\n var sdk =\n props.sdk ||\n Embedo.utils.replacer(Embedo.defaults.SOURCES[type.toLowerCase()].SDK, {\n locale: props.locale || window.navigator.language || 'en_US'\n });\n\n if (!Embedo.utils.handleScriptValidation(sdk)) {\n if (props && typeof props === 'object') {\n sdk += (type === 'facebook' ? '#' : '?') + Embedo.utils.querystring(props);\n }\n document.body.appendChild(Embedo.utils.generateScript(sdk));\n }\n }\n };\n\n /**\n * @method domify\n * Replaces \"data-embedo-*\" elements during initialization.\n */\n Embedo.prototype.domify = function domify() {\n var embedos = document.querySelectorAll('[data-embedo-url]');\n [].forEach.call(\n embedos,\n function (embedo_el) {\n var options = Object.keys(embedo_el.dataset || {}).reduce(function (acc, cur) {\n if (cur.indexOf('embedo') !== -1) {\n var option = Embedo.utils.camelToSnake(cur).replace('embedo-', '');\n acc[option] = embedo_el.dataset[cur];\n }\n return acc;\n }, {});\n\n this.render(embedo_el, options.url, options);\n }.bind(this)\n );\n };\n\n /**\n * @method facebook\n * Facebook embed prototype\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.facebook = function facebook(id, element, url, options, callback) {\n var type, fb_html_class;\n var globalOptions = this.options.facebook || {};\n\n if (/^([^\\/?].+\\/)?post|photo(s|\\.php)[\\/?].*$/gm.test(url)) {\n type = url.match(/comment_id|reply_comment_id/) ? 'comment' : 'post';\n } else if (/^([^\\/?].+\\/)?video(s|\\.php)[\\/?].*$/gm.test(url)) {\n type = 'video';\n }\n\n if (type && type.match(/post|video/)) {\n var embed_uri = Embedo.utils.replacer(Embedo.defaults.SOURCES.facebook.oEmbed, {\n version: globalOptions.version || 'v8.0',\n type: type\n });\n var query = Embedo.utils.merge(\n {\n url: encodeURI(url),\n access_token: globalOptions.access_token,\n omitscript: true\n },\n options,\n Embedo.defaults.RESTRICTED\n );\n\n if ('width' in options || 'maxwidth' in options) {\n query.maxwidth = options.maxwidth || options.width;\n }\n\n embed_uri += '?' + Embedo.utils.querystring(query);\n\n Embedo.utils.fetch(embed_uri, function (error, content) {\n if (error) {\n Embedo.log('error', 'facebook', error);\n return callback(error);\n }\n handleFacebookEmbed(content.html);\n });\n } else {\n if (type === 'comment' || url.match(/comment_id|reply_comment_id/)) {\n fb_html_class = 'fb-comment-embed';\n options['data-numposts'] = options['data-numposts'] || 5;\n } else if (url.match(/plugins\\/comments/)) {\n fb_html_class = 'fb-comments';\n } else {\n fb_html_class = 'fb-page';\n options['data-height'] = options['data-height'] || options.maxheight || options.height || 500;\n }\n\n var fb_html = Embedo.utils.generateElement(\n 'div',\n Embedo.utils.merge(\n {\n class: fb_html_class,\n 'data-href': url,\n 'data-width': options['data-width'] || options.maxwidth || options.width || 350\n },\n options\n )\n );\n\n fb_html.removeAttribute('width');\n fb_html.removeAttribute('height');\n handleFacebookEmbed(fb_html);\n }\n\n function handleFacebookEmbed(html) {\n var container = Embedo.utils.generateEmbed(id, 'facebook', html);\n element.appendChild(container);\n\n facebookify(\n element,\n container,\n {\n id: id,\n url: url,\n strict: options.strict,\n width: options.width,\n height: options.height,\n centerize: options.centerize\n },\n function (err, result) {\n if (err) {\n return callback(err);\n }\n callback(null, {\n id: id,\n el: element,\n width: result.width,\n height: result.height\n });\n }\n );\n }\n };\n\n /**\n * Twitter embed prototype\n * @method twitter\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.twitter = function twitter(id, element, url, options, callback) {\n var embed_uri = Embedo.defaults.SOURCES.twitter.oEmbed;\n var query = Embedo.utils.merge(\n {\n url: encodeURI(url),\n omit_script: 1\n },\n options,\n Embedo.defaults.RESTRICTED\n );\n\n if ('width' in options || 'maxwidth' in options) {\n query.maxwidth = options.maxwidth || options.width;\n }\n\n if ('height' in options || 'maxheight' in options) {\n query.maxheight = options.maxheight || options.height;\n }\n\n embed_uri += '?' + Embedo.utils.querystring(query);\n\n Embedo.utils.fetch(embed_uri, function (error, content) {\n if (error) {\n Embedo.log('error', 'twitter', error);\n return callback(error);\n }\n var container = Embedo.utils.generateEmbed(id, 'twitter', content.html);\n element.appendChild(container);\n\n twitterify(\n element,\n container,\n {\n id: id,\n url: url,\n strict: options.strict,\n width: options.width,\n height: options.height,\n centerize: options.centerize\n },\n function (err, result) {\n if (err) {\n return callback(err);\n }\n callback(null, {\n id: id,\n el: element,\n width: result.width,\n height: result.height\n });\n }\n );\n });\n };\n\n /**\n * @method instagram\n * Instagram embed prototype\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.instagram = function (id, element, url, options, callback) {\n var globalOptions = this.options.instagram || {};\n var embed_uri = Embedo.utils.replacer(Embedo.defaults.SOURCES.instagram.oEmbed, {\n version: globalOptions.version || 'v8.0'\n });\n var query = Embedo.utils.merge(\n {\n url: encodeURI(url),\n access_token: globalOptions.access_token,\n omitscript: true,\n hidecaption: true\n },\n options,\n Embedo.defaults.RESTRICTED\n );\n\n if ('width' in options || 'maxwidth' in options) {\n options.width = options.maxwidth ? options.maxwidth : options.width;\n if (options.width > 320) {\n query.maxwidth = options.width;\n }\n }\n\n embed_uri += '?' + Embedo.utils.querystring(query);\n\n var method = options.jsonp ? 'jsonp' : 'ajax';\n\n Embedo.utils[method](\n embed_uri,\n function (err, content) {\n if (err) {\n Embedo.log('error', 'instagram', err);\n // If oembed or instagram embed script is unavailable.\n if (options.jsonp === undefined || options.jsonp === null) {\n var extracted_url = url.match(Embedo.defaults.SOURCES.instagram.REGEX);\n url = extracted_url && extracted_url.length > 0 ? extracted_url[0].replace(/\\/$/, '') : url;\n return this.iframe(id, element, url + '/embed/', options, callback);\n }\n return callback(err);\n }\n\n var container = Embedo.utils.generateEmbed(id, 'instagram', content.html);\n element.appendChild(container);\n\n instagramify(\n element,\n container,\n {\n id: id,\n url: url,\n strict: options.strict,\n width: options.width,\n height: options.height,\n centerize: options.centerize\n },\n function (err, result) {\n if (err) {\n return callback(err);\n }\n callback(null, {\n id: id,\n el: element,\n width: result.width,\n height: result.height\n });\n }\n );\n }.bind(this)\n );\n };\n\n /**\n * @method youtube\n * YouTube embed prototype\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.youtube = function (id, element, url, options, callback) {\n if (!getYTVideoID(url)) {\n Embedo.log('error', 'youtube', 'Unable to detect Youtube video id.');\n return callback('Unable to detect Youtube video id.');\n }\n\n var youtube_uri = Embedo.defaults.SOURCES.youtube.oEmbed + getYTVideoID(url);\n youtube_uri +=\n '?' +\n Embedo.utils.querystring(\n Embedo.utils.merge(\n {\n modestbranding: 1,\n autohide: 1,\n showinfo: 0\n },\n options,\n Embedo.defaults.RESTRICTED\n )\n );\n\n this.iframe(id, element, youtube_uri, options, callback);\n\n /**\n * @func getYTVideoID\n * @private\n *\n * @param {string} url\n * @returns {String|Boolean}\n */\n function getYTVideoID(url) {\n var regexp = /(?:youtube\\.com\\/(?:[^\\/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?\\/ ]{11})/i;\n var match = url.match(regexp);\n return match && match.length === 2 ? match[1] : false;\n }\n };\n\n /**\n * @method vimeo\n * Vimeo embed prototype\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.vimeo = function (id, element, url, options, callback) {\n var size = Embedo.utils.dimensions(element, options.width, options.height);\n var embed_options = Embedo.utils.merge(\n {\n url: url,\n width: size.width,\n height: size.height,\n autohide: 1\n },\n options,\n Embedo.defaults.RESTRICTED\n );\n var embed_uri = Embedo.defaults.SOURCES.vimeo.oEmbed + '?' + Embedo.utils.querystring(embed_options);\n\n Embedo.utils.fetch(embed_uri, function (error, content) {\n if (error) {\n Embedo.log('error', 'vimeo', error);\n return callback(error);\n }\n var container = Embedo.utils.generateEmbed(id, 'vimeo', content.html);\n element.appendChild(container);\n\n callback(null, {\n id: id,\n el: element,\n width: size.width,\n height: size.height\n });\n });\n };\n\n /**\n * @method pinterest\n * Pinterest Embed\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.pinterest = function (id, element, url, options, callback) {\n var size = Embedo.utils.dimensions(element, options.width, options.height);\n var pin_size = size.width > 600 ? 'large' : size.width < 345 ? 'small' : 'medium';\n var pin_el = Embedo.utils.generateElement(\n 'a',\n Embedo.utils.merge(\n {\n href: url,\n 'data-pin-do': options['data-pin-do'] || 'embedPin',\n 'data-pin-lang': options['data-pin-lang'] || 'en',\n 'data-pin-width': pin_size\n },\n options\n )\n );\n var container = Embedo.utils.generateEmbed(id, 'pinterest', pin_el);\n\n element.appendChild(container);\n\n pinterestify(\n element,\n container,\n {\n id: id,\n url: url,\n strict: options.strict,\n width: options.width,\n height: options.height,\n centerize: options.centerize\n },\n function (err, result) {\n if (err) {\n Embedo.log('error', 'pinterest', err);\n return callback(err);\n }\n callback(null, {\n id: id,\n el: element,\n width: result.width,\n height: result.height\n });\n }\n );\n };\n\n /**\n * @method github\n * Embed github URLs (gist) to DOM\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.github = function github(id, element, url, options, callback) {\n var size = Embedo.utils.dimensions(element, options.width, options.height);\n var iframe = Embedo.utils.generateElement(\n 'iframe',\n Embedo.utils.merge(\n {\n width: size.width,\n height: size.height\n },\n options,\n Embedo.defaults.RESTRICTED\n )\n );\n var container = Embedo.utils.generateEmbed(id, 'github', iframe);\n\n element.appendChild(container);\n iframe.contentWindow.document.open();\n iframe.contentWindow.document.write(\n '' +\n '' +\n ''\n );\n iframe.contentWindow.document.close();\n iframe.onerror = function (err) {\n callback(err);\n };\n iframe.addEventListener('load', function (event) {\n callback(null, {\n id: id,\n el: element,\n event: event,\n width: Embedo.utils.compute(container, 'width'),\n height: Embedo.utils.compute(container, 'height')\n });\n });\n };\n\n /**\n * @method soundcloud\n * SoundCloud Embed Player (api-web) prototype\n *\n * @see https://developers.soundcloud.com/docs/oembed\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.soundcloud = function (id, element, url, options, callback) {\n if (options.hasOwnProperty('width') && options.width) {\n options.maxwidth = options.maxwidth || options.width || '100%';\n }\n if (options.hasOwnProperty('height') && options.height) {\n options.maxheight = options.maxheight || options.height;\n }\n var size = Embedo.utils.dimensions(element, options.maxwidth, options.maxheight);\n var embed_options = Embedo.utils.merge(\n {\n url: encodeURI(url),\n format: 'js' // Defaults JSONP\n },\n options,\n Embedo.defaults.RESTRICTED\n );\n var embed_uri = Embedo.defaults.SOURCES.soundcloud.oEmbed + '?' + Embedo.utils.querystring(embed_options);\n\n Embedo.utils.fetch(embed_uri, function (error, content) {\n if (error) {\n Embedo.log('error', 'soundcloud', error);\n return callback(error);\n }\n var container = Embedo.utils.generateEmbed(id, 'soundcloud', content.html);\n element.appendChild(container);\n\n callback(null, {\n id: id,\n el: element,\n width: size.width,\n height: size.height\n });\n });\n };\n\n /**\n * @method iframe\n * Embed URLs to HTML5 frame prototype\n *\n * @param {number} id\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.iframe = function (id, element, url, options, callback) {\n var fragment = document.createDocumentFragment();\n var size = Embedo.utils.dimensions(element, options.width, options.height);\n var extension = (url.substr(url.lastIndexOf('.')) || '').replace('.', '').toLowerCase();\n var mimes = {\n csv: 'text/csv',\n pdf: 'application/pdf',\n gif: 'image/gif',\n js: 'application/javascript',\n json: 'application/json',\n xhtml: 'application/xhtml+xml',\n pps: 'application/vnd.ms-powerpoint',\n ppsx: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n xml: 'application/xml',\n ogg: 'video/ogg',\n mp4: 'video/mp4',\n webm: 'video/webm',\n html: 'text/html'\n };\n var mimetype = mimes[extension] || mimes.html;\n var has_video = extension.match(/(mp4|ogg|webm|ogv|ogm)/);\n var el_type = has_video ? 'video' : options.tagName || 'embed';\n var override = Embedo.utils.merge({}, options, Embedo.defaults.RESTRICTED);\n var embed_el = Embedo.utils.generateElement(\n el_type,\n Embedo.utils.merge(\n {\n type: mimetype,\n src: url,\n width: size.width,\n height: size.height\n },\n override\n )\n );\n\n fragment.appendChild(Embedo.utils.generateEmbed(id, 'iframe', embed_el));\n element.appendChild(fragment);\n\n if (el_type === 'video') {\n setTimeout(function () {\n callback(null, {\n id: id,\n el: element,\n width: Embedo.utils.compute(embed_el, 'width'),\n height: Embedo.utils.compute(embed_el, 'height')\n });\n }, 250);\n } else {\n embed_el.onerror = function (err) {\n callback(err);\n };\n embed_el.addEventListener('load', function (event) {\n callback(null, {\n id: id,\n el: element,\n event: event,\n width: Embedo.utils.compute(embed_el, 'width'),\n height: Embedo.utils.compute(embed_el, 'height')\n });\n });\n }\n };\n\n /**\n * @method render\n * Renders an embedo instance\n *\n * @name load\n * @param {HTMLElement} element\n * @param {string} url\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.render = function (element, url, options, callback) {\n Embedo.log('info', 'render', element, url, options);\n options = options || {};\n callback = callback || function () {};\n\n if (!element || !Embedo.utils.validateElement(element)) {\n Embedo.log('info', 'render', '`element` is either missing or invalid');\n return this.emit('error', new Error('element_is_missing'));\n }\n\n if (typeof url !== 'string') {\n return this.emit('error', new Error('invalid_url_string'));\n }\n\n if (!url || !Embedo.utils.validateURL(url)) {\n Embedo.log('info', 'render', '`url` is either missing or invalid');\n return this.emit('error', new Error('invalid_or_missing_url'));\n }\n\n var source = getURLSource(url);\n\n if (!source) {\n Embedo.log('info', 'render', new Error('Invalid or Unsupported URL'));\n return this.emit('error', new Error('url_not_supported'));\n }\n\n if (!this[source]) {\n Embedo.log('info', 'render', new Error('Requested source is not implemented or missing.'));\n return this.emit('error', new Error('unrecognised_url'));\n }\n\n if ('width' in options && options.width) {\n options.width = Embedo.utils.convertToPx(element, 'width', options.width);\n }\n\n if ('height' in options && options.height) {\n options.height = Embedo.utils.convertToPx(element, 'height', options.height);\n }\n\n var id = Embedo.utils.uuid();\n var request = {\n id: id,\n el: element,\n source: source,\n url: url,\n attributes: options\n };\n\n this.requests.push(request);\n\n this.emit('watch', 'load', request);\n\n this[source](\n id,\n element,\n url,\n options,\n function (err, data) {\n if (err) {\n this.emit('error', err);\n return callback(err);\n }\n data.url = request.url;\n data.source = request.source;\n data.options = request.attributes;\n\n this.emit('watch', 'loaded', data);\n callback(null, data);\n }.bind(this)\n );\n\n /**\n * @function getURLSource\n * Checks Source from URI\n *\n * @param {string} url\n * @returns {string}\n */\n function getURLSource(url) {\n var urlRegExp = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n var sources = Object.keys(Embedo.defaults.SOURCES) || [];\n\n if (!urlRegExp.test(url)) {\n return null;\n }\n\n var matched_source = sources\n .filter(function (source) {\n if (Embedo.defaults.SOURCES[source] && url.match(Embedo.defaults.SOURCES[source].REGEX)) {\n return source;\n }\n })\n .filter(Boolean);\n\n return matched_source && matched_source.length ? matched_source[0] : 'iframe';\n }\n };\n\n /**\n * @method load\n * Loads single or multiple embedo instances\n *\n * @name load\n * @param {HTMLElement} element\n * @param {String|Array} urls\n * @param {object} options Optional parameters.\n * @return callback\n */\n Embedo.prototype.load = function (element, urls, options) {\n Embedo.log('info', 'load', element, urls, options);\n options = options || {};\n var observer = new Embedo.utils.observer();\n\n if (!element || !Embedo.utils.validateElement(element)) {\n Embedo.log('info', 'load', '`element` is either missing or invalid');\n this.emit('error', new Error('element_is_missing'));\n } else {\n if (urls instanceof Array) {\n var reqs = {\n failed: [],\n finished: []\n };\n var jobs = urls.map(\n function (url) {\n return function (done) {\n this.render(element, url, options, function (err, data) {\n if (err) {\n reqs.failed.push(err);\n return done(err);\n }\n reqs.finished.push(data);\n done(null, data);\n });\n }.bind(this);\n }.bind(this)\n );\n\n Embedo.utils.sequencer.apply(this, jobs).then(function () {\n if (reqs.failed.length > 0) {\n return observer.reject(reqs.failed);\n }\n observer.resolve(reqs.finished);\n });\n } else if (typeof urls === 'string') {\n this.render(element, urls, options, function (err, data) {\n if (err) {\n return observer.reject(err);\n }\n observer.resolve(data);\n });\n } else {\n this.emit('error', new Error('invalid_url_string'));\n }\n }\n\n return observer;\n };\n\n /**\n * @method refresh\n * Refresh single or all embedo instances\n *\n * @param {object} element\n */\n Embedo.prototype.refresh = function (element) {\n Embedo.log('info', 'refresh', this.requests, element);\n if (this.requests.length === 0) {\n return;\n }\n this.requests.forEach(\n function (request) {\n if (!request.el) {\n return;\n }\n\n if (request.source === 'iframe') {\n return this.emit('refresh', request, {\n width: Embedo.utils.compute(request.el, 'width'),\n height: Embedo.utils.compute(request.el, 'height')\n });\n }\n\n if (element) {\n if (!Embedo.utils.validateElement(element)) {\n return;\n }\n if (element === request.el) {\n automagic(\n request.el,\n document.getElementById(request.id),\n request.attributes,\n function (err, data) {\n if (data) {\n this.emit('refresh', request, data);\n }\n }.bind(this)\n );\n }\n } else {\n automagic(\n request.el,\n document.getElementById(request.id),\n request.attributes,\n function (err, data) {\n if (data) {\n this.emit('refresh', request, data);\n }\n }.bind(this)\n );\n }\n }.bind(this)\n );\n\n return this;\n };\n\n /**\n * @method destroy\n * Destroy an/all instance(s) of embedo\n *\n * @param {object} element\n */\n Embedo.prototype.destroy = function (element) {\n Embedo.log('warn', 'destroy', this.requests, element);\n if (this.requests.length === 0) {\n return;\n }\n var removed = [];\n\n this.requests.forEach(\n function (request) {\n if (!request.el || !Embedo.utils.validateElement(request.el)) {\n return;\n }\n if (element) {\n if (!Embedo.utils.validateElement(element)) {\n return;\n }\n if (element === request.el) {\n if (document.getElementById(request.id)) {\n document.getElementById(request.id).remove();\n }\n removed.push(request.id);\n this.emit('destroy', request);\n }\n } else {\n if (document.getElementById(request.id)) {\n document.getElementById(request.id).remove();\n }\n removed.push(request.id);\n this.emit('destroy', request);\n }\n }.bind(this)\n );\n\n this.requests = this.requests.filter(function (request) {\n return removed.indexOf(request.id) < 0;\n });\n\n return this;\n };\n\n /**\n * @function facebookify\n * Parses Facebook SDK\n *\n * @param {HTMLElement} parentNode\n * @param {HTMLElement} childNode\n * @param {object} options\n */\n function facebookify(parentNode, childNode, options, callback) {\n Embedo.utils.sdkReady('facebook', function (err) {\n if (err) {\n return callback(err);\n }\n window.FB.XFBML.parse(parentNode);\n window.FB.Event.subscribe('xfbml.render', function () {\n // First state will be `parsed` and then `rendered` to acknowledge embed.\n if (childNode.firstChild) {\n if (options.centerize !== false) {\n Embedo.utils.centerize(parentNode, childNode, options);\n }\n if (childNode.firstChild.getAttribute('fb-xfbml-state') === 'rendered') {\n automagic(parentNode, childNode, options, callback);\n }\n }\n });\n });\n }\n\n /**\n * @function twitterify\n * Parses Twitter SDK\n *\n * @param {HTMLElement} parentNode\n * @param {HTMLElement} childNode\n * @param {object} options\n */\n function twitterify(parentNode, childNode, options, callback) {\n Embedo.utils.sdkReady('twitter', function (err) {\n if (err) {\n return callback(err);\n }\n window.twttr.widgets.load(childNode);\n window.twttr.events.bind('rendered', function (event) {\n if (\n childNode.firstChild &&\n childNode.firstChild.getAttribute('id') === event.target.getAttribute('id')\n ) {\n if (options.centerize !== false) {\n Embedo.utils.centerize(parentNode, childNode, options);\n }\n automagic(parentNode, childNode, options, callback);\n }\n });\n });\n }\n\n /**\n * @function instagramify\n * Parses Instagram SDK\n *\n * @param {HTMLElement} parentNode\n * @param {HTMLElement} childNode\n * @param {object} options\n */\n function instagramify(parentNode, childNode, options, callback) {\n Embedo.utils.sdkReady('instagram', function (err) {\n if (err) {\n return callback(err);\n }\n if (!window.instgrm.Embeds || !window.instgrm.Embeds) {\n return callback(new Error('instagram_sdk_missing'));\n }\n\n window.instgrm.Embeds.process(childNode);\n var instagram_embed_timer = setInterval(handleInstagramRendered, 250);\n\n function handleInstagramRendered() {\n if (childNode.firstChild && childNode.firstChild.className.match(/instagram-media-rendered/)) {\n clearInterval(instagram_embed_timer);\n if (options.centerize !== false) {\n Embedo.utils.centerize(parentNode, childNode, options);\n }\n return automagic(parentNode, childNode, options, callback);\n }\n }\n });\n }\n\n /**\n * @function pinterestify\n * Parses Pinterest SDK\n *\n * @param {HTMLElement} parentNode\n * @param {HTMLElement} childNode\n * @param {object} options\n */\n function pinterestify(parentNode, childNode, options, callback) {\n Embedo.utils.sdkReady('pinterest', function (err) {\n if (err) {\n return callback(err);\n }\n if (!window.PinUtils || !window.PinUtils || !childNode || !childNode.firstChild) {\n return callback(new Error('pinterest_sdk_missing'));\n }\n\n setTimeout(function () {\n if (!childNode.querySelector('[data-pin-href]')) {\n window.PinUtils.build(childNode);\n }\n\n var pinterest_embed_timer_count = 0;\n var pinterest_embed_timer = setInterval(function () {\n pinterest_embed_timer_count += 1;\n if (childNode.querySelector('[data-pin-href]')) {\n clearInterval(pinterest_embed_timer);\n if (options.centerize !== false) {\n Embedo.utils.centerize(parentNode, childNode, options);\n }\n return automagic(parentNode, childNode, options, callback);\n } else if (pinterest_embed_timer_count >= 20) {\n clearInterval(pinterest_embed_timer);\n return callback(new Error('pinterest_embed_failed'));\n }\n }, 250);\n }, 750);\n });\n }\n\n /**\n * @function automagic\n * Automagic - Scales and resizes embed container\n *\n * @param {HTMLElement} parentNode\n * @param {HTMLElement} childNode\n * @param {object} options\n */\n function automagic(parentNode, childNode, options, callback) {\n Embedo.log('info', 'automagic', parentNode, childNode, options);\n options = options || {};\n callback = callback || function () {};\n\n if (!Embedo.utils.validateElement(parentNode) || !Embedo.utils.validateElement(childNode)) {\n return callback(new Error('HTMLElement does not exist in DOM.'));\n }\n\n Embedo.utils.watcher(\n options.id || Embedo.utils.uuid(),\n function () {\n var parent = {\n width: options.width || Embedo.utils.compute(parentNode, 'width'),\n height: options.height || Embedo.utils.compute(parentNode, 'height')\n };\n var child = {\n width: Embedo.utils.compute(childNode, 'width'),\n height: Embedo.utils.compute(childNode, 'height')\n };\n\n if (options.strict) {\n return callback(null, {\n width: parent.width,\n height: parent.height\n });\n }\n\n // Odd case when requested height is beyond limit of third party\n // Only apply when fixed width and heights are provided\n if (options.width && options.height) {\n var isOverflowing = child.width > parent.width || child.height > parent.height;\n\n if (options.width) {\n childNode.style.width = options.width + 'px';\n }\n\n if (options.height) {\n childNode.style.height = options.height + 'px';\n }\n\n if (isOverflowing) {\n var scale = Math.min(parent.width / child.width, parent.height / child.height);\n Embedo.utils.transform(childNode, 'scale(' + scale + ')');\n }\n }\n\n callback(null, {\n width: parent.width,\n height: parent.height\n });\n },\n 500\n );\n }\n\n return Embedo;\n});\n"],"names":["l","Symbol","for","n","p","q","r","t","u","v","w","x","y","z","iterator","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","Object","assign","D","E","a","b","e","this","props","context","refs","updater","F","G","prototype","isReactComponent","setState","Error","forceUpdate","H","constructor","isPureReactComponent","I","Array","isArray","J","hasOwnProperty","K","current","L","key","ref","__self","__source","M","d","c","k","h","call","g","arguments","length","children","f","m","defaultProps","$$typeof","type","_owner","O","P","Q","replace","escape","toString","R","N","push","A","next","done","value","String","keys","join","S","T","_status","_result","then","default","U","V","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","X","react_production_min","Children","map","forEach","apply","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","act","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","reactModule","exports","require$$0","root","factory","Embedo","options","defaults","OPTIONS","requests","events","init","automagic","parentNode","childNode","callback","log","utils","validateElement","watcher","id","uuid","parent","width","compute","height","child","strict","isOverflowing","style","scale","Math","min","transform","defineProperty","facebook","twitter","instagram","pinterest","SOURCES","GLOBAL","SDK","oEmbed","REGEX","PARAMS","cookie","appId","access_token","youtube","vimeo","github","soundcloud","RESTRICTED","writable","enumerable","configurable","debug","console","slice","plugins","plugin","create","primary","random","secondary","extend","obj","i","merge","destination","source","preserve","property","indexOf","sequencer","args","counter","callme","replacer","str","split","observer","Deferred","resolved","rejected","execute","list","resolve","reject","fail","camelToSnake","toLowerCase","validateURL","url","test","generateElement","attributes","html","el","document","setAttribute","innerHTML","generateEmbed","container","appendChild","generateScript","script","src","encodeURI","HTMLElement","window","nodeType","nodeName","sdkReady","check","setTimeout","querystring","parts","encodeURIComponent","fetch","target","head","getElementsByTagName","jsonpCallback","clear","removeChild","data","defer","charset","onerror","err","ajax","xhr","XMLHttpRequest","onload","status","responseText","statusText","JSON","parse","open","send","element","webkitTransform","MozTransform","msTransform","OTransform","prop","is_computed","getBoundingClientRect","defaultView","getComputedStyle","getPropertyValue","currentStyle","toUpperCase","isNaN","Number","convertToPx","percent","parent_width","parseFloat","match","dimension","documentElement","body","innerWidth","clientWidth","innerHeight","clientHeight","fn","timer","EMBEDO_WATCHER","request","clearTimeout","dimensions","el_width","centerize","parent_el","child_el","maxWidth","marginLeft","marginRight","maxHeight","display","textAlign","margin","handleScriptValidation","scripts","defineProperties","on","event","listener","off","index","splice","emit","listeners","once","sdk","locale","navigator","language","appendSDK","domify","embedos","querySelectorAll","embedo_el","dataset","reduce","acc","cur","fb_html_class","globalOptions","embed_uri","query","omitscript","maxwidth","error","content","handleFacebookEmbed","maxheight","fb_html","class","removeAttribute","FB","XFBML","Event","subscribe","firstChild","getAttribute","facebookify","result","omit_script","twttr","widgets","load","twitterify","hidecaption","method","jsonp","extracted_url","iframe","instgrm","Embeds","process","instagram_embed_timer","setInterval","handleInstagramRendered","className","clearInterval","instagramify","getYTVideoID","youtube_uri","modestbranding","autohide","showinfo","size","embed_options","pin_size","pin_el","href","PinUtils","querySelector","build","pinterest_embed_timer_count","pinterest_embed_timer","pinterestify","contentWindow","write","close","addEventListener","format","fragment","createDocumentFragment","extension","substr","lastIndexOf","mimes","csv","pdf","gif","js","json","xhtml","pps","ppsx","xml","ogg","mp4","webm","mimetype","el_type","tagName","override","embed_el","sources","matched_source","filter","Boolean","getURLSource","urls","reqs","failed","finished","jobs","refresh","getElementById","destroy","removed","remove","module"],"mappings":"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","x_google_ignoreList":[0,1,2]}