12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // @flow
-
- /**
- * Returns the namespace for all global variables, functions, etc that we need.
- *
- * @returns {Object} The namespace.
- *
- * NOTE: After React-ifying everything this should be the only global.
- */
- export function getJitsiMeetGlobalNS() {
- if (!window.JitsiMeetJS) {
- window.JitsiMeetJS = {};
- }
-
- if (!window.JitsiMeetJS.app) {
- window.JitsiMeetJS.app = {};
- }
-
- return window.JitsiMeetJS.app;
- }
-
- /**
- * Gets the description of a specific {@code Symbol}.
- *
- * @param {Symbol} symbol - The {@code Symbol} to retrieve the description of.
- * @private
- * @returns {string} The description of {@code symbol}.
- */
- export function getSymbolDescription(symbol: ?Symbol) {
- let description = symbol ? symbol.toString() : 'undefined';
-
- if (description.startsWith('Symbol(') && description.endsWith(')')) {
- description = description.slice(7, -1);
- }
-
- // The polyfill es6-symbol that we use does not appear to comply with the
- // Symbol standard and, merely, adds @@ at the beginning of the description.
- if (description.startsWith('@@')) {
- description = description.slice(2);
- }
-
- return description;
- }
-
- /**
- * A helper function that behaves similar to Object.assign, but only reassigns a
- * property in target if it's defined in source.
- *
- * @param {Object} target - The target object to assign the values into.
- * @param {Object} source - The source object.
- * @returns {Object}
- */
- export function assignIfDefined(target: Object, source: Object) {
- const to = Object(target);
-
- for (const nextKey in source) {
- if (source.hasOwnProperty(nextKey)) {
- const value = source[nextKey];
-
- if (typeof value !== 'undefined') {
- to[nextKey] = value;
- }
- }
- }
-
- return to;
- }
|