(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["Sketchfab"] = factory(); else root["Sketchfab"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/static/builds/web/dist/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 39); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), /* 1 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(42); var defined = __webpack_require__(14); module.exports = function (it) { return IObject(defined(it)); }; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(4); var createDesc = __webpack_require__(13); module.exports = __webpack_require__(5) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(12); var IE8_DOM_DEFINE = __webpack_require__(31); var toPrimitive = __webpack_require__(20); var dP = Object.defineProperty; exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return dP(O, P, Attributes); } catch (e) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(9)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { var store = __webpack_require__(17)('wks'); var uid = __webpack_require__(11); var Symbol = __webpack_require__(0).Symbol; var USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function (name) { return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }), /* 7 */ /***/ (function(module, exports) { var core = module.exports = { version: '2.5.3' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /* 8 */ /***/ (function(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 9 */ /***/ (function(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(29); var enumBugKeys = __webpack_require__(18); module.exports = Object.keys || function keys(O) { return $keys(O, enumBugKeys); }; /***/ }), /* 11 */ /***/ (function(module, exports) { var id = 0; var px = Math.random(); module.exports = function (key) { return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(8); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 13 */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /* 14 */ /***/ (function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /* 15 */ /***/ (function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil; var floor = Math.floor; module.exports = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(17)('keys'); var uid = __webpack_require__(11); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); }; /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(0); var SHARED = '__core-js_shared__'; var store = global[SHARED] || (global[SHARED] = {}); module.exports = function (key) { return store[key] || (store[key] = {}); }; /***/ }), /* 18 */ /***/ (function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(0); var core = __webpack_require__(7); var ctx = __webpack_require__(47); var hide = __webpack_require__(3); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var IS_WRAP = type & $export.W; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE]; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; var key, own, out; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; if (own && key in exports) continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function (C) { var F = function (a, b, c) { if (this instanceof C) { switch (arguments.length) { case 0: return new C(); case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if (IS_PROTO) { (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(8); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (it, S) { if (!isObject(it)) return it; var fn, val; if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /* 21 */ /***/ (function(module, exports) { module.exports = true; /***/ }), /* 22 */ /***/ (function(module, exports) { module.exports = {}; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { var def = __webpack_require__(4).f; var has = __webpack_require__(1); var TAG = __webpack_require__(6)('toStringTag'); module.exports = function (it, tag, stat) { if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); }; /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { exports.f = __webpack_require__(6); /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(0); var core = __webpack_require__(7); var LIBRARY = __webpack_require__(21); var wksExt = __webpack_require__(24); var defineProperty = __webpack_require__(4).f; module.exports = function (name) { var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); }; /***/ }), /* 26 */ /***/ (function(module, exports) { exports.f = {}.propertyIsEnumerable; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(40), __esModule: true }; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(14); module.exports = function (it) { return Object(defined(it)); }; /***/ }), /* 29 */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(1); var toIObject = __webpack_require__(2); var arrayIndexOf = __webpack_require__(43)(false); var IE_PROTO = __webpack_require__(16)('IE_PROTO'); module.exports = function (object, names) { var O = toIObject(object); var i = 0; var result = []; var key; for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }), /* 30 */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(5) && !__webpack_require__(9)(function () { return Object.defineProperty(__webpack_require__(32)('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 32 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(8); var document = __webpack_require__(0).document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { return is ? document.createElement(it) : {}; }; /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _iterator = __webpack_require__(49); var _iterator2 = _interopRequireDefault(_iterator); var _symbol = __webpack_require__(61); var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { return typeof obj === "undefined" ? "undefined" : _typeof(obj); } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); }; /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var LIBRARY = __webpack_require__(21); var $export = __webpack_require__(19); var redefine = __webpack_require__(35); var hide = __webpack_require__(3); var has = __webpack_require__(1); var Iterators = __webpack_require__(22); var $iterCreate = __webpack_require__(53); var setToStringTag = __webpack_require__(23); var getPrototypeOf = __webpack_require__(56); var ITERATOR = __webpack_require__(6)('iterator'); var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` var FF_ITERATOR = '@@iterator'; var KEYS = 'keys'; var VALUES = 'values'; var returnThis = function () { return this; }; module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { $iterCreate(Constructor, NAME, next); var getMethod = function (kind) { if (!BUGGY && kind in proto) return proto[kind]; switch (kind) { case KEYS: return function keys() { return new Constructor(this, kind); }; case VALUES: return function values() { return new Constructor(this, kind); }; } return function entries() { return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator'; var DEF_VALUES = DEFAULT == VALUES; var VALUES_BUG = false; var proto = Base.prototype; var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; var $default = (!BUGGY && $native) || getMethod(DEFAULT); var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; var methods, key, IteratorPrototype; // Fix native if ($anyNative) { IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEF_VALUES && $native && $native.name !== VALUES) { VALUES_BUG = true; $default = function values() { return $native.call(this); }; } // Define iterator if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if (DEFAULT) { methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if (FORCED) for (key in methods) { if (!(key in proto)) redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(3); /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(12); var dPs = __webpack_require__(54); var enumBugKeys = __webpack_require__(18); var IE_PROTO = __webpack_require__(16)('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = __webpack_require__(32)('iframe'); var i = enumBugKeys.length; var lt = '<'; var gt = '>'; var iframeDocument; iframe.style.display = 'none'; __webpack_require__(55).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; /***/ }), /* 37 */ /***/ (function(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) var $keys = __webpack_require__(29); var hiddenKeys = __webpack_require__(18).concat('length', 'prototype'); exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return $keys(O, hiddenKeys); }; /***/ }), /* 39 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__ = __webpack_require__(27); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof__ = __webpack_require__(33); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_apis_viewer_lib_APIClient__ = __webpack_require__(72); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_utilities_ParseQueryString__ = __webpack_require__(73); var Sketchfab = function Sketchfab(version, target) { var v = version, t = target; if ((typeof version === 'undefined' ? 'undefined' : __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default()(version)) === 'object') { t = version; v = null; } this._version = v; // url options for debug only this._initPending = false; this._optionsPending = true; this._urlOptions = this._getURLOptions(); this._target = t; if (!t.allow) t.allow = 'vr; autoplay; fullscreen'; this._client = undefined; this._options = undefined; }; Sketchfab.prototype = { _urlOptionsDict: { skfb_api_token: { // needed to be allow to override // the embed url and version default: undefined, type: 'string' }, skfb_api_version: { // allow interactive changes // version api viewer default: undefined, type: 'string' }, skfb_api_domain: { // where the embed has to be // allows testing in the wild // of new viewer-api default: 'sketchfab', type: 'string' } }, _optionsLoaded: function _optionsLoaded(urlOptions) { this._urlOptions = urlOptions; this._version = this._getURLOption('skfb_api_version', this._version || '1.2.1'); var url = this._getURLOption('skfb_api_domain'); this._url = 'https://' + url + '.com/models/XXXX/embed'; this._optionsPending = false; if (this._initPending) this._RealInit(); }, _getURLOption: function _getURLOption(name, defaultValue) { var dictQueryParam = this._urlOptionsDict[name]; // not whitelisted if (!dictQueryParam) return defaultValue; // default if not overridden if (defaultValue === undefined) defaultValue = dictQueryParam.default; var value = this._urlOptions[name]; // no option if (!value || !value.length) return defaultValue; // finally the option return value[0]; }, // need to be a user with a @sketchfab.com email to be authorized _getURLOptions: function _getURLOptions() { if (!window || !window.location.search) return this._optionsLoaded({}); var urlOptions = Object(__WEBPACK_IMPORTED_MODULE_3_utilities_ParseQueryString__["a" /* parse */])(window.location.search); var whitelistedOptions = false; for (var key in urlOptions) { if (this._urlOptionsDict[key]) { whitelistedOptions = true; break; } } var token = urlOptions.skfb_api_token; if (!token || !whitelistedOptions) return this._optionsLoaded({}); var callbackSuccess = this._optionsLoaded.bind(this); function reqTokenListener() { if (parseInt(this.readyState, 10) === 4) { if (parseInt(this.status, 10) === 200) { try { var userMe = JSON.parse(this.responseText); if (userMe.email.split('@')[1] === 'sketchfab.com') callbackSuccess(urlOptions); } catch (err) { callbackSuccess({}); } } else { callbackSuccess({}); } } } var tokenReq = new XMLHttpRequest(); tokenReq.addEventListener('load', reqTokenListener); tokenReq.open('GET', 'https://api.sketchfab.com/v3/me'); tokenReq.setRequestHeader('Authorization', 'Token ' + token[0]); tokenReq.send(); }, getEmbedURL: function getEmbedURL(urlid, options) { var url = this._url + '?api_version=' + this._version + '&api_id=' + this._client.getIdentifier(); if (options) { __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default()(options).forEach(function (key) { // filter options if (options[key] == null || typeof options[key] === 'function') { return; } url += '&' + key.toString() + '=' + options[key].toString(); }); } return url.replace('XXXX', urlid); }, init: function init(urlid, options) { this._options = options; this._urlid = urlid; if (!this._optionsPending) this._RealInit(); this._initPending = true; }, _RealInit: function _RealInit() { this._client = new __WEBPACK_IMPORTED_MODULE_2_apis_viewer_lib_APIClient__["a" /* default */](this._target.contentWindow); window.addEventListener('message', function (e) { if (e.data.type !== 'api.ready') return; if (e.data.instanceId !== this._client.getIdentifier()) return; this._client.use(this._version, function (err, api) { if (err) throw err; this.success.call(this, api); }.bind(this)); }.bind(this)); this._target.onload = function (evt) { try { var title = evt.currentTarget.contentDocument.title; if (title.startsWith('Page not found') || title.startsWith('400 - ')) { this.error.call(this, 'Model not found ' + this._urlid); } } catch (e) { // CORS error not allowing that check // when accessing e.currentTarget.contentDocument // so we silently fail this call. } }.bind(this); this._target.src = this.getEmbedURL(this._urlid, this._options); }, success: function success(api) { // api ready to use if (this._options.success && typeof this._options.success === 'function') { this._options.success(api); } }, error: function error(api) { // api error if (this._options.error && typeof this._options.error === 'function') { this._options.error(api); } } }; /* harmony default export */ __webpack_exports__["default"] = (Sketchfab); /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(41); module.exports = __webpack_require__(7).Object.keys; /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(28); var $keys = __webpack_require__(10); __webpack_require__(46)('keys', function () { return function keys(it) { return $keys(toObject(it)); }; }); /***/ }), /* 42 */ /***/ (function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(30); // eslint-disable-next-line no-prototype-builtins module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }), /* 43 */ /***/ (function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(2); var toLength = __webpack_require__(44); var toAbsoluteIndex = __webpack_require__(45); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) if (IS_INCLUDES || index in O) { if (O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }), /* 44 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(15); var min = Math.min; module.exports = function (it) { return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }), /* 45 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(15); var max = Math.max; var min = Math.min; module.exports = function (index, length) { index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }), /* 46 */ /***/ (function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(19); var core = __webpack_require__(7); var fails = __webpack_require__(9); module.exports = function (KEY, exec) { var fn = (core.Object || {})[KEY] || Object[KEY]; var exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); }; /***/ }), /* 47 */ /***/ (function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(48); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; /***/ }), /* 48 */ /***/ (function(module, exports) { module.exports = function (it) { if (typeof it != 'function') throw TypeError(it + ' is not a function!'); return it; }; /***/ }), /* 49 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(50), __esModule: true }; /***/ }), /* 50 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(51); __webpack_require__(57); module.exports = __webpack_require__(24).f('iterator'); /***/ }), /* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var $at = __webpack_require__(52)(true); // 21.1.3.27 String.prototype[@@iterator]() __webpack_require__(34)(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() }, function () { var O = this._t; var index = this._i; var point; if (index >= O.length) return { value: undefined, done: true }; point = $at(O, index); this._i += point.length; return { value: point, done: false }; }); /***/ }), /* 52 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(15); var defined = __webpack_require__(14); // true -> String#at // false -> String#codePointAt module.exports = function (TO_STRING) { return function (that, pos) { var s = String(defined(that)); var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; /***/ }), /* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var create = __webpack_require__(36); var descriptor = __webpack_require__(13); var setToStringTag = __webpack_require__(23); var IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() __webpack_require__(3)(IteratorPrototype, __webpack_require__(6)('iterator'), function () { return this; }); module.exports = function (Constructor, NAME, next) { Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); setToStringTag(Constructor, NAME + ' Iterator'); }; /***/ }), /* 54 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(4); var anObject = __webpack_require__(12); var getKeys = __webpack_require__(10); module.exports = __webpack_require__(5) ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = getKeys(Properties); var length = keys.length; var i = 0; var P; while (length > i) dP.f(O, P = keys[i++], Properties[P]); return O; }; /***/ }), /* 55 */ /***/ (function(module, exports, __webpack_require__) { var document = __webpack_require__(0).document; module.exports = document && document.documentElement; /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = __webpack_require__(1); var toObject = __webpack_require__(28); var IE_PROTO = __webpack_require__(16)('IE_PROTO'); var ObjectProto = Object.prototype; module.exports = Object.getPrototypeOf || function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectProto : null; }; /***/ }), /* 57 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(58); var global = __webpack_require__(0); var hide = __webpack_require__(3); var Iterators = __webpack_require__(22); var TO_STRING_TAG = __webpack_require__(6)('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + 'TextTrackList,TouchList').split(','); for (var i = 0; i < DOMIterables.length; i++) { var NAME = DOMIterables[i]; var Collection = global[NAME]; var proto = Collection && Collection.prototype; if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = Iterators.Array; } /***/ }), /* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var addToUnscopables = __webpack_require__(59); var step = __webpack_require__(60); var Iterators = __webpack_require__(22); var toIObject = __webpack_require__(2); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = __webpack_require__(34)(Array, 'Array', function (iterated, kind) { this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function () { var O = this._t; var kind = this._k; var index = this._i++; if (!O || index >= O.length) { this._t = undefined; return step(1); } if (kind == 'keys') return step(0, index); if (kind == 'values') return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }), /* 59 */ /***/ (function(module, exports) { module.exports = function () { /* empty */ }; /***/ }), /* 60 */ /***/ (function(module, exports) { module.exports = function (done, value) { return { value: value, done: !!done }; }; /***/ }), /* 61 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(62), __esModule: true }; /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(63); __webpack_require__(69); __webpack_require__(70); __webpack_require__(71); module.exports = __webpack_require__(7).Symbol; /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // ECMAScript 6 symbols shim var global = __webpack_require__(0); var has = __webpack_require__(1); var DESCRIPTORS = __webpack_require__(5); var $export = __webpack_require__(19); var redefine = __webpack_require__(35); var META = __webpack_require__(64).KEY; var $fails = __webpack_require__(9); var shared = __webpack_require__(17); var setToStringTag = __webpack_require__(23); var uid = __webpack_require__(11); var wks = __webpack_require__(6); var wksExt = __webpack_require__(24); var wksDefine = __webpack_require__(25); var enumKeys = __webpack_require__(65); var isArray = __webpack_require__(66); var anObject = __webpack_require__(12); var isObject = __webpack_require__(8); var toIObject = __webpack_require__(2); var toPrimitive = __webpack_require__(20); var createDesc = __webpack_require__(13); var _create = __webpack_require__(36); var gOPNExt = __webpack_require__(67); var $GOPD = __webpack_require__(68); var $DP = __webpack_require__(4); var $keys = __webpack_require__(10); var gOPD = $GOPD.f; var dP = $DP.f; var gOPN = gOPNExt.f; var $Symbol = global.Symbol; var $JSON = global.JSON; var _stringify = $JSON && $JSON.stringify; var PROTOTYPE = 'prototype'; var HIDDEN = wks('_hidden'); var TO_PRIMITIVE = wks('toPrimitive'); var isEnum = {}.propertyIsEnumerable; var SymbolRegistry = shared('symbol-registry'); var AllSymbols = shared('symbols'); var OPSymbols = shared('op-symbols'); var ObjectProto = Object[PROTOTYPE]; var USE_NATIVE = typeof $Symbol == 'function'; var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDesc = DESCRIPTORS && $fails(function () { return _create(dP({}, 'a', { get: function () { return dP(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (it, key, D) { var protoDesc = gOPD(ObjectProto, key); if (protoDesc) delete ObjectProto[key]; dP(it, key, D); if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); } : dP; var wrap = function (tag) { var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); sym._k = tag; return sym; }; var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { return typeof it == 'symbol'; } : function (it) { return it instanceof $Symbol; }; var $defineProperty = function defineProperty(it, key, D) { if (it === ObjectProto) $defineProperty(OPSymbols, key, D); anObject(it); key = toPrimitive(key, true); anObject(D); if (has(AllSymbols, key)) { if (!D.enumerable) { if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); it[HIDDEN][key] = true; } else { if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; D = _create(D, { enumerable: createDesc(0, false) }); } return setSymbolDesc(it, key, D); } return dP(it, key, D); }; var $defineProperties = function defineProperties(it, P) { anObject(it); var keys = enumKeys(P = toIObject(P)); var i = 0; var l = keys.length; var key; while (l > i) $defineProperty(it, key = keys[i++], P[key]); return it; }; var $create = function create(it, P) { return P === undefined ? _create(it) : $defineProperties(_create(it), P); }; var $propertyIsEnumerable = function propertyIsEnumerable(key) { var E = isEnum.call(this, key = toPrimitive(key, true)); if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { it = toIObject(it); key = toPrimitive(key, true); if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; var D = gOPD(it, key); if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; return D; }; var $getOwnPropertyNames = function getOwnPropertyNames(it) { var names = gOPN(toIObject(it)); var result = []; var i = 0; var key; while (names.length > i) { if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); } return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { var IS_OP = it === ObjectProto; var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); var result = []; var i = 0; var key; while (names.length > i) { if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); } return result; }; // 19.4.1.1 Symbol([description]) if (!USE_NATIVE) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); var tag = uid(arguments.length > 0 ? arguments[0] : undefined); var $set = function (value) { if (this === ObjectProto) $set.call(OPSymbols, value); if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; setSymbolDesc(this, tag, createDesc(1, value)); }; if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); return wrap(tag); }; redefine($Symbol[PROTOTYPE], 'toString', function toString() { return this._k; }); $GOPD.f = $getOwnPropertyDescriptor; $DP.f = $defineProperty; __webpack_require__(38).f = gOPNExt.f = $getOwnPropertyNames; __webpack_require__(26).f = $propertyIsEnumerable; __webpack_require__(37).f = $getOwnPropertySymbols; if (DESCRIPTORS && !__webpack_require__(21)) { redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); } wksExt.f = function (name) { return wrap(wks(name)); }; } $export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); for (var es6Symbols = ( // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' ).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); $export($export.S + $export.F * !USE_NATIVE, 'Symbol', { // 19.4.2.1 Symbol.for(key) 'for': function (key) { return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key); }, // 19.4.2.5 Symbol.keyFor(sym) keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; }, useSetter: function () { setter = true; }, useSimple: function () { setter = false; } }); $export($export.S + $export.F * !USE_NATIVE, 'Object', { // 19.1.2.2 Object.create(O [, Properties]) create: $create, // 19.1.2.4 Object.defineProperty(O, P, Attributes) defineProperty: $defineProperty, // 19.1.2.3 Object.defineProperties(O, Properties) defineProperties: $defineProperties, // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) getOwnPropertyDescriptor: $getOwnPropertyDescriptor, // 19.1.2.7 Object.getOwnPropertyNames(O) getOwnPropertyNames: $getOwnPropertyNames, // 19.1.2.8 Object.getOwnPropertySymbols(O) getOwnPropertySymbols: $getOwnPropertySymbols }); // 24.3.2 JSON.stringify(value [, replacer [, space]]) $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { var S = $Symbol(); // MS Edge converts symbol values to JSON as {} // WebKit converts symbol values to JSON as null // V8 throws on boxed symbols return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; })), 'JSON', { stringify: function stringify(it) { var args = [it]; var i = 1; var replacer, $replacer; while (arguments.length > i) args.push(arguments[i++]); $replacer = replacer = args[1]; if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined if (!isArray(replacer)) replacer = function (key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol(value)) return value; }; args[1] = replacer; return _stringify.apply($JSON, args); } }); // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(3)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // 19.4.3.5 Symbol.prototype[@@toStringTag] setToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag] setToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag] setToStringTag(global.JSON, 'JSON', true); /***/ }), /* 64 */ /***/ (function(module, exports, __webpack_require__) { var META = __webpack_require__(11)('meta'); var isObject = __webpack_require__(8); var has = __webpack_require__(1); var setDesc = __webpack_require__(4).f; var id = 0; var isExtensible = Object.isExtensible || function () { return true; }; var FREEZE = !__webpack_require__(9)(function () { return isExtensible(Object.preventExtensions({})); }); var setMeta = function (it) { setDesc(it, META, { value: { i: 'O' + ++id, // object ID w: {} // weak collections IDs } }); }; var fastKey = function (it, create) { // return primitive with prefix if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; // not necessary to add metadata if (!create) return 'E'; // add missing metadata setMeta(it); // return object ID } return it[META].i; }; var getWeak = function (it, create) { if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return true; // not necessary to add metadata if (!create) return false; // add missing metadata setMeta(it); // return hash weak collections IDs } return it[META].w; }; // add metadata on freeze-family methods calling var onFreeze = function (it) { if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); return it; }; var meta = module.exports = { KEY: META, NEED: false, fastKey: fastKey, getWeak: getWeak, onFreeze: onFreeze }; /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { // all enumerable object keys, includes symbols var getKeys = __webpack_require__(10); var gOPS = __webpack_require__(37); var pIE = __webpack_require__(26); module.exports = function (it) { var result = getKeys(it); var getSymbols = gOPS.f; if (getSymbols) { var symbols = getSymbols(it); var isEnum = pIE.f; var i = 0; var key; while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); } return result; }; /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { // 7.2.2 IsArray(argument) var cof = __webpack_require__(30); module.exports = Array.isArray || function isArray(arg) { return cof(arg) == 'Array'; }; /***/ }), /* 67 */ /***/ (function(module, exports, __webpack_require__) { // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toIObject = __webpack_require__(2); var gOPN = __webpack_require__(38).f; var toString = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function (it) { try { return gOPN(it); } catch (e) { return windowNames.slice(); } }; module.exports.f = function getOwnPropertyNames(it) { return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); }; /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { var pIE = __webpack_require__(26); var createDesc = __webpack_require__(13); var toIObject = __webpack_require__(2); var toPrimitive = __webpack_require__(20); var has = __webpack_require__(1); var IE8_DOM_DEFINE = __webpack_require__(31); var gOPD = Object.getOwnPropertyDescriptor; exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P) { O = toIObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return gOPD(O, P); } catch (e) { /* empty */ } if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); }; /***/ }), /* 69 */ /***/ (function(module, exports) { /***/ }), /* 70 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(25)('asyncIterator'); /***/ }), /* 71 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(25)('observable'); /***/ }), /* 72 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var API = function API(members, apiClient) { // populate this with method members.forEach(function (name) { this[name] = function () { var requestId = apiClient._requestIdCounter++; var args = Array.prototype.slice.call(arguments); var callback; if (args.length > 0) { var lastArg = args[args.length - 1]; if (typeof lastArg === 'function') { callback = args.pop(); } } // no callback no need to maintain a pending request if (callback) apiClient._pendingRequests[requestId] = callback.bind(this); apiClient._target.postMessage({ type: 'api.request', instanceId: apiClient.getIdentifier(), requestId: requestId, member: name, arguments: args }, '*'); }; }, this); this.addEventListener = function (name, callback, options) { // If the 'viewerready' event has already beend triggered we want to // execute the user's callback right away. if (name === 'viewerready' && apiClient.isViewerReady) { callback(); } if (!apiClient._eventListeners[name]) apiClient._eventListeners[name] = []; apiClient._eventListeners[name].push(callback); if (options && this.setListenerOptions) { options.name = name; this.setListenerOptions(options); } }; this.removeEventListener = function (name, callback) { if (!apiClient._eventListeners[name]) return; var index = apiClient._eventListeners[name].indexOf(callback); if (index !== -1) { apiClient._eventListeners[name].splice(index, 1); } }; }; var APIClient = function APIClient(target) { this._target = target; this._requestIdCounter = 0; this._pendingRequests = {}; this._eventListeners = {}; this._ready = false; var identifier = Math.random().toString(); this._identifier = identifier.substr(identifier.indexOf('.') + 1); this.listenServer(); }; APIClient.prototype = { getIdentifier: function getIdentifier() { return this._identifier; }, use: function use(version, callback) { this._version = version; // we need to delay this call to be sure the server is ready var initializeAPI = function (version, callback) { var requestId = this._requestIdCounter++; // function to initialize the api when the server will answer this._pendingRequests[requestId] = function (err, instanceId, members) { if (err) { callback.call(this, err); } else { callback.call(this, null, new API(members, this)); } }.bind(this); this._target.postMessage({ type: 'api.initialize', requestId: requestId, name: version }, '*'); }.bind(this); var callInitAPI = function () { initializeAPI(version, callback); }.bind(this); // if the api is ready we can execute now the initialize. // If not we will intialize the api after the server part is ready. // see the code in the message function if (this._ready) callInitAPI();else this.initAPI = callInitAPI; }, listenServer: function listenServer() { window.addEventListener('message', function (e) { if (e.data.type !== 'api.ready' && e.data.type !== 'api.initialize.result' && e.data.type !== 'api.request.result' && e.data.type !== 'api.event') return; if (e.data.instanceId !== this.getIdentifier()) return; // initialize the api only when the server is ready if (e.data.type === 'api.ready') { if (!this._ready) { this._ready = true; // it's possible client has not yet called use // so it means that initAPI is undefined if (this.initAPI) this.initAPI(); } } // if it's an event dont check the request if (e.data.type === 'api.event') { var args = e.data.results; var eventName = args[0]; // handle listener that listen all or * events if (this._eventListeners['*'] || this._eventListeners.all) { ['*', 'all'].forEach(function (eventAll) { if (this._eventListeners[eventAll]) { this._eventListeners[eventAll].forEach(function (callback) { // callback is used as this to maintain a potential callback // where the user would binded its own this callback.apply(callback, args); }); } }, this); return; } // for localised listener ( not all events ) var argumentsWithoutEventName = args.slice(1); if (this._eventListeners[eventName]) { // execute all callback listening eventName this._eventListeners[eventName].forEach(function (callback) { // callback is used as this to maintain a potential callback // where the user would binded its own this callback.apply(callback, argumentsWithoutEventName); }); } else if (eventName === 'viewerready') { this.isViewerReady = true; } } else { if (!this._pendingRequests[e.data.requestId]) return; this._pendingRequests[e.data.requestId].apply(null, e.data.results); } }.bind(this)); } }; /* harmony default export */ __webpack_exports__["a"] = (APIClient); /***/ }), /* 73 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* unused harmony export normalize */ /* harmony export (immutable) */ __webpack_exports__["a"] = parse; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_typeof__ = __webpack_require__(33); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_typeof___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_typeof__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__ = __webpack_require__(27); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__); function normalize(parameters) { var destination = {}; __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(parameters).forEach(function (name) { destination[name] = !Array.isArray(parameters[name]) ? [parameters[name]] : parameters[name]; }); return destination; } function parse(queryString) { if ((typeof queryString === 'undefined' ? 'undefined' : __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_typeof___default()(queryString)) === 'object') return normalize(queryString); if (queryString[0] === '?') queryString = queryString.substr(1); return queryString.split(/&+/g).reduce(function (data, part) { if (part.length === 0) return data; var splitOffset = part.indexOf('='); if (splitOffset === -1) splitOffset = part.length; var name = decodeURIComponent(part.substr(0, splitOffset).replace(/\+/g, '%20')); var value = decodeURIComponent(part.substr(splitOffset + 1).replace(/\+/g, '%20')); if (typeof data[name] === 'undefined') data[name] = []; data[name].push(value); return data; }, {}); } /* unused harmony default export */ var _unused_webpack_default_export = ({ normalize: normalize, parse: parse }); /***/ }) /******/ ])["default"]; }); //# sourceMappingURL=sketchfab-viewer-1.2.1.js.map