UNPKG

bigbluebutton-html-plugin-sdk

Version:

This repository contains the SDK for developing BigBlueButton plugins. Plugins are React components that can be loaded from external sources by the BigBlueButton HTML5 client to extend its functionalities.

157 lines 7.55 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useGetNormalizedLocale = exports.useGetLocalesIndex = exports.mergeLocaleMessages = exports.fetchLocaleAndStore = void 0; var react_1 = require("react"); var ui_data_1 = require("../../../../ui-data"); function fetchLocaleAndStore(localeUrl, fetchConfigs) { return __awaiter(this, void 0, void 0, function () { var result, localeMessages; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fetch(localeUrl, fetchConfigs)]; case 1: result = _a.sent(); return [4 /*yield*/, result.json()]; case 2: localeMessages = _a.sent(); return [2 /*return*/, localeMessages]; } }); }); } exports.fetchLocaleAndStore = fetchLocaleAndStore; function mergeLocaleMessages(desiredMessages, fallbackMessages) { return __assign(__assign({}, fallbackMessages), desiredMessages); } exports.mergeLocaleMessages = mergeLocaleMessages; function useGetLocalesIndex(localeUrl, fetchConfigs) { var _a = (0, react_1.useState)({ data: [], loading: true, }), indexOfLocales = _a[0], setIndexOfLocales = _a[1]; (0, react_1.useEffect)(function () { if (localeUrl || localeUrl !== '') { var indexUrl = "".concat(localeUrl, "/index.json"); fetch(indexUrl, fetchConfigs) .then(function (res) { return res.json(); }) .then(function (list) { var filtered = list.filter(function (filename) { return filename !== 'index.json'; }); setIndexOfLocales({ data: filtered, loading: false, }); }) .catch(function (error) { setIndexOfLocales({ data: [], loading: false, error: error, }); }); } }, [localeUrl]); return indexOfLocales; } exports.useGetLocalesIndex = useGetLocalesIndex; function useGetNormalizedLocale(_a) { var pluginApi = _a.pluginApi, fetchConfigs = _a.fetchConfigs; var localeFromUiData = pluginApi.useUiData(ui_data_1.IntlLocaleUiDataNames.CURRENT_LOCALE, { locale: 'en', fallbackLocale: 'en', }); var _b = (0, react_1.useState)({ data: localeFromUiData, loading: true, }), currentLocale = _b[0], setCurrentLocale = _b[1]; var localesIndex = useGetLocalesIndex(pluginApi.localesBaseUrl, fetchConfigs); (0, react_1.useEffect)(function () { if (!localesIndex.loading && !localesIndex.error) { var desiredLocale_1 = localeFromUiData.locale.split(/[-_]/g); var usableLocales = localesIndex.data .map(function (file) { return file.replace('.json', ''); }) .reduce(function (locales, locale) { return (locale.match(desiredLocale_1[0]) ? __spreadArray(__spreadArray([], locales, true), [locale], false) : locales); }, []); var isDesiredLocalePresent = usableLocales.findIndex(function (locale) { return locale === localeFromUiData.locale; }) !== -1; if (isDesiredLocalePresent) { setCurrentLocale({ data: localeFromUiData, loading: false, }); } else { var regionDefault = usableLocales.find(function (locale) { return locale === desiredLocale_1[0]; }); var localeFallback = regionDefault || usableLocales[0]; setCurrentLocale({ data: __assign(__assign({}, localeFromUiData), { locale: localeFallback }), loading: false, }); } } else if (!localesIndex.loading && localesIndex.error) { setCurrentLocale({ data: localeFromUiData, loading: false, }); } }, [localeFromUiData, localesIndex]); return currentLocale; } exports.useGetNormalizedLocale = useGetNormalizedLocale; //# sourceMappingURL=utils.js.map