Merge remote-tracking branch 'origin/master'

This commit is contained in:
CSantos 2018-12-14 10:39:02 +01:00
commit abd83f7201
19 changed files with 17063 additions and 7479 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6,24 +6,24 @@
"start": "ng serve"
},
"dependencies": {
"@angular/common": "7.0.0",
"@angular/compiler": "7.0.0",
"@angular/core": "7.0.0",
"@angular/http": "7.0.0",
"@angular/forms": "7.0.0",
"@angular/platform-browser": "7.0.0",
"@angular/platform-browser-dynamic": "7.0.0",
"core-js": "2.5.7",
"@angular/common": "7.1.3",
"@angular/compiler": "7.1.3",
"@angular/core": "7.1.3",
"@angular/http": "7.1.3",
"@angular/forms": "7.1.3",
"@angular/platform-browser": "7.1.3",
"@angular/platform-browser-dynamic": "7.1.3",
"core-js": "2.6.0",
"openvidu-browser": "2.6.0",
"zone.js": "0.8.26"
},
"devDependencies": {
"@angular/cli": "7.0.1",
"@angular/compiler-cli": "7.0.0",
"@angular-devkit/build-angular": "0.10.1",
"@angular/cli": "7.1.3",
"@angular/compiler-cli": "7.1.3",
"@angular-devkit/build-angular": "0.11.3",
"codelyzer": "4.5.0",
"ts-node": "7.0.1",
"tslint": "5.11.0",
"typescript": "3.1.3"
"typescript": "3.1.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,9 @@
"dependencies": {
"axios": "0.18.0",
"openvidu-browser": "2.6.0",
"react": "16.5.2",
"react-dom": "16.5.2",
"react-scripts": "1.1.5"
"react": "16.6.3",
"react-dom": "16.6.3",
"react-scripts": "2.1.1"
},
"scripts": {
"start": "react-scripts start",

16
openvidu-ionic/build.json Normal file
View File

@ -0,0 +1,16 @@
{
"ios": {
"build": {
"buildFlag": ["-UseModernBuildSystem=0"]
},
"run": {
"buildFlag": ["-UseModernBuildSystem=0"]
},
"debug": {
"buildFlag": ["-UseModernBuildSystem=0"]
},
"release": {
"buildFlag": ["-UseModernBuildSystem=0"]
}
}
}

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.openvidu.sample" version="2.5.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>OpenVidu Sample</name>
<description>OpenVidu sample app</description>
<widget id="io.openvidu.sampleios" version="2.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>OpenVidu Ionic</name>
<description>OpenVidu Ionic app compatible with Android and iOS</description>
<author email="openvidu@gmail.com" href="https://openvidu.io/">OpenVidu</author>
<content src="index.html" />
<access origin="*" />
@ -48,6 +48,16 @@
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<hook src="hooks/iosrtc-swift-support.js" type="after_platform_add" />
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to your camera</string>
</config-file>
<config-file parent="NSContactsUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to contacts</string>
</config-file>
<config-file parent="NSMicrophoneUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to your microphone</string>
</config-file>
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
@ -88,5 +98,8 @@
<plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
<plugin name="cordova-plugin-android-permissions" spec="^1.0.0" />
<engine name="android" spec="~7.1.1" />
<plugin name="cordova-plugin-iosrtc" spec="4.0.2" />
<engine name="android" spec="7.1.1" />
<engine name="ios" spec="4.5.5" />
<engine name="browser" spec="5.0.4" />
</widget>

View File

@ -0,0 +1,143 @@
#!/usr/bin/env node
'use strict';
// This hook automates this:
// https://github.com/BasqueVoIPMafia/cordova-plugin-iosrtc/blob/master/docs/Building.md
var
fs = require("fs"),
path = require("path"),
xcode = require('xcode'),
BUILD_VERSION = '9.0',
BUILD_VERSION_XCODE = '"' + BUILD_VERSION + '"',
SWIFT_VERSION = '3.0',
SWIFT_VERSION_XCODE = '"' + SWIFT_VERSION + '"',
RUNPATH_SEARCH_PATHS = '@executable_path/Frameworks',
RUNPATH_SEARCH_PATHS_XCODE = '"' + RUNPATH_SEARCH_PATHS + '"',
ENABLE_BITCODE = 'NO',
ENABLE_BITCODE_XCODE = '"' + ENABLE_BITCODE + '"',
BRIDGING_HEADER_END = '/Plugins/cordova-plugin-iosrtc/cordova-plugin-iosrtc-Bridging-Header.h',
COMMENT_KEY = /_comment$/;
// Helpers
// Returns the project name
function getProjectName(protoPath) {
var
cordovaConfigPath = path.join(protoPath, 'config.xml'),
content = fs.readFileSync(cordovaConfigPath, 'utf-8');
return /<name>([\s\S]*)<\/name>/mi.exec(content)[1].trim();
}
// Drops the comments
function nonComments(obj) {
var
keys = Object.keys(obj),
newObj = {},
i = 0;
for (i; i < keys.length; i += 1) {
if (!COMMENT_KEY.test(keys[i])) {
newObj[keys[i]] = obj[keys[i]];
}
}
return newObj;
}
// Starting here
module.exports = function (context) {
var
projectRoot = context.opts.projectRoot,
projectName = getProjectName(projectRoot),
xcconfigPath = path.join(projectRoot, '/platforms/ios/cordova/build.xcconfig'),
xcodeProjectName = projectName + '.xcodeproj',
xcodeProjectPath = path.join(projectRoot, 'platforms', 'ios', xcodeProjectName, 'project.pbxproj'),
swiftBridgingHead = projectName + BRIDGING_HEADER_END,
swiftBridgingHeadXcode = '"' + swiftBridgingHead + '"',
swiftOptions = [''], // <-- begin to file appending AFTER initial newline
xcodeProject;
// Checking if the project files are in the right place
if (!fs.existsSync(xcodeProjectPath)) {
debugerror('an error occurred searching the project file at: "' + xcodeProjectPath + '"');
return;
}
debug('".pbxproj" project file found: ' + xcodeProjectPath);
if (!fs.existsSync(xcconfigPath)) {
debugerror('an error occurred searching the project file at: "' + xcconfigPath + '"');
return;
}
debug('".xcconfig" project file found: ' + xcconfigPath);
xcodeProject = xcode.project(xcodeProjectPath);
// Showing info about the tasks to do
debug('fixing issues in the generated project files:');
debug('- "iOS Deployment Target" and "Deployment Target" to: ' + BUILD_VERSION_XCODE);
debug('- "Runpath Search Paths" to: ' + RUNPATH_SEARCH_PATHS_XCODE);
debug('- "Objective-C Bridging Header" to: ' + swiftBridgingHeadXcode);
debug('- "ENABLE_BITCODE" set to: ' + ENABLE_BITCODE_XCODE);
debug('- "SWIFT_VERSION" set to: ' + SWIFT_VERSION_XCODE);
// Massaging the files
// "build.xcconfig"
swiftOptions.push('LD_RUNPATH_SEARCH_PATHS = ' + RUNPATH_SEARCH_PATHS);
swiftOptions.push('SWIFT_OBJC_BRIDGING_HEADER = ' + swiftBridgingHead);
swiftOptions.push('IPHONEOS_DEPLOYMENT_TARGET = ' + BUILD_VERSION);
swiftOptions.push('ENABLE_BITCODE = ' + ENABLE_BITCODE);
swiftOptions.push('SWIFT_VERSION = ' + SWIFT_VERSION);
// NOTE: Not needed
// swiftOptions.push('EMBEDDED_CONTENT_CONTAINS_SWIFT = YES');
fs.appendFileSync(xcconfigPath, swiftOptions.join('\n'));
debug('file correctly fixed: ' + xcconfigPath);
// "project.pbxproj"
// Parsing it
xcodeProject.parse(function (error) {
var configurations, buildSettings;
if (error) {
debugerror('an error occurred during the parsing of the project file');
return;
}
configurations = nonComments(xcodeProject.pbxXCBuildConfigurationSection());
// Adding or changing the parameters we need
Object.keys(configurations).forEach(function (config) {
buildSettings = configurations[config].buildSettings;
buildSettings.LD_RUNPATH_SEARCH_PATHS = RUNPATH_SEARCH_PATHS_XCODE;
buildSettings.SWIFT_OBJC_BRIDGING_HEADER = swiftBridgingHeadXcode;
buildSettings.IPHONEOS_DEPLOYMENT_TARGET = BUILD_VERSION_XCODE;
buildSettings.ENABLE_BITCODE = ENABLE_BITCODE_XCODE;
buildSettings.SWIFT_VERSION = SWIFT_VERSION_XCODE;
});
// Writing the file again
fs.writeFileSync(xcodeProjectPath, xcodeProject.writeSync(), 'utf-8');
debug('file correctly fixed: ' + xcodeProjectPath);
});
};
function debug(msg) {
console.log('iosrtc-swift-support.js [INFO] ' + msg);
}
function debugerror(msg) {
console.error('iosrtc-swift-support.js [ERROR] ' + msg);
}

View File

@ -1879,6 +1879,11 @@
"callsite": "1.0.0"
}
},
"big-integer": {
"version": "1.6.36",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz",
"integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg=="
},
"big.js": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
@ -1968,6 +1973,22 @@
"multicast-dns-service-types": "^1.1.0"
}
},
"bplist-creator": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz",
"integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=",
"requires": {
"stream-buffers": "~2.2.0"
}
},
"bplist-parser": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
"integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
"requires": {
"big-integer": "^1.6.7"
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@ -2926,6 +2947,661 @@
}
}
},
"cordova-browser": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/cordova-browser/-/cordova-browser-5.0.4.tgz",
"integrity": "sha512-EDuG+9NGsaYpNSY6wF0kR34m1m38V+nRglGXxQ609fgMYrMHEYR2lg38nDr1Os4qeF0LJz8UQ7nq7Y+idg6Aig==",
"requires": {
"abbrev": "*",
"accepts": "*",
"ansi": "*",
"ansi-regex": "2.1.1",
"ansi-styles": "2.2.1",
"array-flatten": "1.1.1",
"balanced-match": "*",
"base64-js": "1.2.0",
"big-integer": "*",
"body-parser": "1.18.2",
"bplist-parser": "*",
"brace-expansion": "*",
"bytes": "*",
"chalk": "1.1.3",
"compressible": "*",
"compression": "1.7.2",
"concat-map": "*",
"content-disposition": "*",
"content-type": "*",
"cookie": "*",
"cookie-signature": "1.0.6",
"cordova-common": "2.2.5",
"cordova-registry-mapper": "*",
"cordova-serve": "2.0.1",
"debug": "2.6.9",
"depd": "*",
"destroy": "*",
"ee-first": "*",
"elementtree": "0.1.6",
"encodeurl": "*",
"escape-html": "*",
"escape-string-regexp": "*",
"etag": "*",
"express": "*",
"finalhandler": "*",
"forwarded": "*",
"fresh": "*",
"glob": "5.0.15",
"has-ansi": "2.0.0",
"http-errors": "1.6.3",
"iconv-lite": "0.4.19",
"inflight": "*",
"inherits": "*",
"ipaddr.js": "1.6.0",
"is-wsl": "*",
"media-typer": "*",
"merge-descriptors": "*",
"methods": "*",
"mime": "1.4.1",
"mime-db": "1.33.0",
"mime-types": "2.1.18",
"minimatch": "*",
"ms": "2.0.0",
"negotiator": "*",
"nopt": "3.0.6",
"on-finished": "*",
"on-headers": "*",
"once": "*",
"opn": "*",
"parseurl": "*",
"path-is-absolute": "*",
"path-to-regexp": "0.1.7",
"plist": "2.1.0",
"proxy-addr": "2.0.3",
"q": "*",
"qs": "6.5.1",
"range-parser": "*",
"raw-body": "2.3.2",
"safe-buffer": "5.1.1",
"sax": "0.3.5",
"send": "*",
"serve-static": "*",
"setprototypeof": "*",
"shelljs": "0.5.3",
"statuses": "1.4.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0",
"type-is": "*",
"underscore": "*",
"unorm": "*",
"unpipe": "*",
"utils-merge": "*",
"vary": "*",
"wrappy": "*",
"xmlbuilder": "8.2.2",
"xmldom": "*"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"accepts": {
"version": "1.3.5",
"bundled": true,
"requires": {
"mime-types": "~2.1.18",
"negotiator": "0.6.1"
}
},
"ansi": {
"version": "0.3.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true
},
"array-flatten": {
"version": "1.1.1",
"bundled": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"base64-js": {
"version": "1.2.0",
"bundled": true
},
"big-integer": {
"version": "1.6.32",
"bundled": true
},
"body-parser": {
"version": "1.18.2",
"bundled": true,
"requires": {
"bytes": "3.0.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.1",
"http-errors": "~1.6.2",
"iconv-lite": "0.4.19",
"on-finished": "~2.3.0",
"qs": "6.5.1",
"raw-body": "2.3.2",
"type-is": "~1.6.15"
}
},
"bplist-parser": {
"version": "0.1.1",
"bundled": true,
"requires": {
"big-integer": "^1.6.7"
}
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"bytes": {
"version": "3.0.0",
"bundled": true
},
"chalk": {
"version": "1.1.3",
"bundled": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"compressible": {
"version": "2.0.14",
"bundled": true,
"requires": {
"mime-db": ">= 1.34.0 < 2"
},
"dependencies": {
"mime-db": {
"version": "1.34.0",
"bundled": true
}
}
},
"compression": {
"version": "1.7.2",
"bundled": true,
"requires": {
"accepts": "~1.3.4",
"bytes": "3.0.0",
"compressible": "~2.0.13",
"debug": "2.6.9",
"on-headers": "~1.0.1",
"safe-buffer": "5.1.1",
"vary": "~1.1.2"
}
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"content-disposition": {
"version": "0.5.2",
"bundled": true
},
"content-type": {
"version": "1.0.4",
"bundled": true
},
"cookie": {
"version": "0.3.1",
"bundled": true
},
"cookie-signature": {
"version": "1.0.6",
"bundled": true
},
"cordova-common": {
"version": "2.2.5",
"bundled": true,
"requires": {
"ansi": "^0.3.1",
"bplist-parser": "^0.1.0",
"cordova-registry-mapper": "^1.1.8",
"elementtree": "0.1.6",
"glob": "^5.0.13",
"minimatch": "^3.0.0",
"plist": "^2.1.0",
"q": "^1.4.1",
"shelljs": "^0.5.3",
"underscore": "^1.8.3",
"unorm": "^1.3.3"
}
},
"cordova-registry-mapper": {
"version": "1.1.15",
"bundled": true
},
"cordova-serve": {
"version": "2.0.1",
"bundled": true,
"requires": {
"chalk": "^1.1.1",
"compression": "^1.6.0",
"express": "^4.13.3",
"opn": "^5.3.0",
"shelljs": "^0.5.3"
}
},
"debug": {
"version": "2.6.9",
"bundled": true,
"requires": {
"ms": "2.0.0"
}
},
"depd": {
"version": "1.1.2",
"bundled": true
},
"destroy": {
"version": "1.0.4",
"bundled": true
},
"ee-first": {
"version": "1.1.1",
"bundled": true
},
"elementtree": {
"version": "0.1.6",
"bundled": true,
"requires": {
"sax": "0.3.5"
}
},
"encodeurl": {
"version": "1.0.2",
"bundled": true
},
"escape-html": {
"version": "1.0.3",
"bundled": true
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"etag": {
"version": "1.8.1",
"bundled": true
},
"express": {
"version": "4.16.3",
"bundled": true,
"requires": {
"accepts": "~1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.2",
"content-disposition": "0.5.2",
"content-type": "~1.0.4",
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.3",
"qs": "6.5.1",
"range-parser": "~1.2.0",
"safe-buffer": "5.1.1",
"send": "0.16.2",
"serve-static": "1.13.2",
"setprototypeof": "1.1.0",
"statuses": "~1.4.0",
"type-is": "~1.6.16",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
}
},
"finalhandler": {
"version": "1.1.1",
"bundled": true,
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"statuses": "~1.4.0",
"unpipe": "~1.0.0"
}
},
"forwarded": {
"version": "0.1.2",
"bundled": true
},
"fresh": {
"version": "0.5.2",
"bundled": true
},
"glob": {
"version": "5.0.15",
"bundled": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"http-errors": {
"version": "1.6.3",
"bundled": true,
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": ">= 1.4.0 < 2"
}
},
"iconv-lite": {
"version": "0.4.19",
"bundled": true
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true
},
"ipaddr.js": {
"version": "1.6.0",
"bundled": true
},
"is-wsl": {
"version": "1.1.0",
"bundled": true
},
"media-typer": {
"version": "0.3.0",
"bundled": true
},
"merge-descriptors": {
"version": "1.0.1",
"bundled": true
},
"methods": {
"version": "1.1.2",
"bundled": true
},
"mime": {
"version": "1.4.1",
"bundled": true
},
"mime-db": {
"version": "1.33.0",
"bundled": true
},
"mime-types": {
"version": "2.1.18",
"bundled": true,
"requires": {
"mime-db": "~1.33.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"ms": {
"version": "2.0.0",
"bundled": true
},
"negotiator": {
"version": "0.6.1",
"bundled": true
},
"nopt": {
"version": "3.0.6",
"bundled": true,
"requires": {
"abbrev": "1"
}
},
"on-finished": {
"version": "2.3.0",
"bundled": true,
"requires": {
"ee-first": "1.1.1"
}
},
"on-headers": {
"version": "1.0.1",
"bundled": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1"
}
},
"opn": {
"version": "5.3.0",
"bundled": true,
"requires": {
"is-wsl": "^1.1.0"
}
},
"parseurl": {
"version": "1.3.2",
"bundled": true
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-to-regexp": {
"version": "0.1.7",
"bundled": true
},
"plist": {
"version": "2.1.0",
"bundled": true,
"requires": {
"base64-js": "1.2.0",
"xmlbuilder": "8.2.2",
"xmldom": "0.1.x"
}
},
"proxy-addr": {
"version": "2.0.3",
"bundled": true,
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.6.0"
}
},
"q": {
"version": "1.5.1",
"bundled": true
},
"qs": {
"version": "6.5.1",
"bundled": true
},
"range-parser": {
"version": "1.2.0",
"bundled": true
},
"raw-body": {
"version": "2.3.2",
"bundled": true,
"requires": {
"bytes": "3.0.0",
"http-errors": "1.6.2",
"iconv-lite": "0.4.19",
"unpipe": "1.0.0"
},
"dependencies": {
"depd": {
"version": "1.1.1",
"bundled": true
},
"http-errors": {
"version": "1.6.2",
"bundled": true,
"requires": {
"depd": "1.1.1",
"inherits": "2.0.3",
"setprototypeof": "1.0.3",
"statuses": ">= 1.3.1 < 2"
}
},
"setprototypeof": {
"version": "1.0.3",
"bundled": true
}
}
},
"safe-buffer": {
"version": "5.1.1",
"bundled": true
},
"sax": {
"version": "0.3.5",
"bundled": true
},
"send": {
"version": "0.16.2",
"bundled": true,
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.6.2",
"mime": "1.4.1",
"ms": "2.0.0",
"on-finished": "~2.3.0",
"range-parser": "~1.2.0",
"statuses": "~1.4.0"
}
},
"serve-static": {
"version": "1.13.2",
"bundled": true,
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.2",
"send": "0.16.2"
}
},
"setprototypeof": {
"version": "1.1.0",
"bundled": true
},
"shelljs": {
"version": "0.5.3",
"bundled": true
},
"statuses": {
"version": "1.4.0",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"bundled": true
},
"type-is": {
"version": "1.6.16",
"bundled": true,
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.18"
}
},
"underscore": {
"version": "1.9.1",
"bundled": true
},
"unorm": {
"version": "1.4.1",
"bundled": true
},
"unpipe": {
"version": "1.0.0",
"bundled": true
},
"utils-merge": {
"version": "1.0.1",
"bundled": true
},
"vary": {
"version": "1.1.2",
"bundled": true
},
"wrappy": {
"version": "1.0.2",
"bundled": true
},
"xmlbuilder": {
"version": "8.2.2",
"bundled": true
},
"xmldom": {
"version": "0.1.27",
"bundled": true
}
}
},
"cordova-ios": {
"version": "4.5.5",
"resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-4.5.5.tgz",
@ -3236,9 +3912,20 @@
"integrity": "sha512-6ucQ6FdlLdBm8kJfFnzozmBTjru/0xekHP/dAhjoCZggkGRlgs8TsUJFkxa/bV+qi7Dlo50JjmpE4UMWAO+aOQ=="
},
"cordova-plugin-ionic-webview": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-2.2.0.tgz",
"integrity": "sha512-mNTJaIRsz83Vntk2d3jrPCnlqEPQsfOJW6U2AzS7WV1T15Jj/STdXI/Uv1vIyvPVd9h1OLF+yu64ZsmQH2VRMQ=="
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-2.2.5.tgz",
"integrity": "sha512-Eq1ano906pIpK2/0ZGlT99txq9+SlwPiNJNc6YxJUysIS8Nzfv6yB6Rref1ktRHi5szaVoQ5X8HCqf9Vd5Zmgg=="
},
"cordova-plugin-iosrtc": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-iosrtc/-/cordova-plugin-iosrtc-4.0.2.tgz",
"integrity": "sha1-FS2Q9ceOvJ+NVfxLRtpcFT+jQU0=",
"requires": {
"debug": "^2.6.8",
"domready": "^1.0.8",
"random-number": "^0.0.7",
"yaeti": "^0.0.6"
}
},
"cordova-plugin-splashscreen": {
"version": "5.0.2",
@ -3435,7 +4122,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@ -3700,6 +4386,11 @@
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
"dev": true
},
"domready": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
"integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw="
},
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@ -5904,6 +6595,12 @@
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.4.6.tgz",
"integrity": "sha512-X+HRyn6Y0HXxSEjIOSH+p7He8QEaAJj3644Ce+MBFVwA8GHbTaPQcA/hO/L9AxzERrOd5UtN1JkgD1TSgPR7IA=="
},
"ios-deploy": {
"version": "1.9.4",
"resolved": "https://registry.npmjs.org/ios-deploy/-/ios-deploy-1.9.4.tgz",
"integrity": "sha512-pgyc19zgtwGrfx3GL8yV0c0dAPucTpJ0VZkuS3DcqxIZYC48+UW+tBTxI43u1ZDk17mop0ABLs1SkAy5SUQ6pQ==",
"optional": true
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@ -7291,8 +7988,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"multicast-dns": {
"version": "6.2.3",
@ -12833,6 +13529,28 @@
"find-up": "^2.1.0"
}
},
"plist": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz",
"integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=",
"requires": {
"base64-js": "1.1.2",
"xmlbuilder": "8.2.2",
"xmldom": "0.1.x"
},
"dependencies": {
"base64-js": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz",
"integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg="
},
"xmlbuilder": {
"version": "8.2.2",
"resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
"integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
}
}
},
"portfinder": {
"version": "1.0.17",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz",
@ -13186,6 +13904,11 @@
"integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
"dev": true
},
"random-number": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/random-number/-/random-number-0.0.7.tgz",
"integrity": "sha1-fWKxAK3pDxNCNarYwGotLfpc/0g="
},
"randomatic": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
@ -13945,6 +14668,16 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"simple-plist": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz",
"integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=",
"requires": {
"bplist-creator": "0.0.7",
"bplist-parser": "0.1.1",
"plist": "2.0.1"
}
},
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@ -14457,6 +15190,11 @@
"readable-stream": "^2.0.2"
}
},
"stream-buffers": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
},
"stream-combiner2": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
@ -15972,6 +16710,23 @@
"ultron": "~1.1.0"
}
},
"xcode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/xcode/-/xcode-1.0.0.tgz",
"integrity": "sha1-4fWxRDJF3tOMGAeW3xoQ/e2ghOw=",
"requires": {
"pegjs": "^0.10.0",
"simple-plist": "^0.2.1",
"uuid": "3.0.1"
},
"dependencies": {
"uuid": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
"integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE="
}
}
},
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
@ -15996,6 +16751,11 @@
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
"dev": true
},
"xmldom": {
"version": "0.1.27",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
},
"xmlhttprequest-ssl": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
@ -16020,6 +16780,11 @@
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yaeti": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
"integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc="
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",

View File

@ -26,19 +26,26 @@
"@ionic-native/status-bar": "5.0.0-beta.21",
"@ionic/angular": "4.0.0-beta.13",
"cordova-android": "7.1.1",
"cordova-browser": "5.0.4",
"cordova-ios": "4.5.5",
"cordova-plugin-android-permissions": "1.0.0",
"cordova-plugin-device": "2.0.2",
"cordova-plugin-ionic-keyboard": "2.1.3",
"cordova-plugin-ionic-webview": "2.2.0",
"cordova-plugin-splashscreen": "5.0.2",
"cordova-plugin-statusbar": "2.4.2",
"cordova-plugin-whitelist": "1.3.3",
"cordova-plugin-android-permissions": "^1.0.0",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^2.2.5",
"cordova-plugin-iosrtc": "^4.0.2",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"core-js": "2.5.7",
"ios-deploy": "1.9.4",
"openvidu-browser": "2.6.0",
"rxjs": "6.3.3",
"xcode": "1.0.0",
"zone.js": "0.8.26"
},
"optionalDependencies": {
"ios-deploy": "1.9.4"
},
"devDependencies": {
"@angular-devkit/architect": "0.10.3",
"@angular-devkit/build-angular": "0.10.3",
@ -77,10 +84,13 @@
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-android-permissions": {}
"cordova-plugin-android-permissions": {},
"cordova-plugin-iosrtc": {}
},
"platforms": [
"android"
"android",
"ios",
"browser"
]
}
}

View File

@ -4,7 +4,7 @@
<ion-toolbar color="dark">
<img class="demo-logo" src="assets/images/openvidu_vert_white_bg_trans_cropped.png" />
<ion-buttons slot="primary">
<ion-button color="light">
<ion-button color="light" href="https://github.com/OpenVidu/openvidu-tutorials/tree/master/openvidu-ionic">
<ion-icon slot="icon-only" name="logo-github"></ion-icon>
</ion-button>
</ion-buttons>
@ -12,7 +12,7 @@
</ion-header>
<ion-content padding *ngIf="!session">
<div id="img-div"><img src="assets/images/openvidu_grey_bg_transp_cropped.png" /></div>
<h1 align="center" id="title">Join a video session</h1>
<ion-item>
@ -29,48 +29,32 @@
<ion-icon slot="start" name="videocam"></ion-icon>
Join
</ion-button>
</ion-content>
<ion-content *ngIf="session">
<ion-content [scrollEvents]="true" (ionScroll)="refreshVideos()" *ngIf="session">
<div id="session-header">
<h1 id="session-title">{{mySessionId}}</h1>
</div>
<ion-grid>
<!-- Main Stream -->
<ion-row>
<ion-col>
<div *ngIf="mainStreamManager" id="main-video">
<user-video [streamManager]="mainStreamManager"></user-video>
</div>
</ion-col>
</ion-row>
<!--Subscribers and Publishers-->
<ion-row>
<ion-col size="6">
<div *ngIf="publisher" class="stream-container">
<user-video [streamManager]="publisher" (click)="updateMainStreamManager(publisher)"></user-video>
<user-video [streamManager]="publisher"></user-video>
</div>
</ion-col>
<ion-col size="6" *ngFor="let sub of subscribers">
<div class="stream-container">
<user-video [streamManager]="sub" (click)="updateMainStreamManager(sub)"></user-video>
<user-video [streamManager]="sub"></user-video>
</div>
</ion-col>
</ion-row>
</ion-grid>
<ion-fab vertical="bottom" horizontal="center" slot="fixed">
<ion-fab-button mini color="danger" (click)="leaveSession()">
<ion-icon name="power"></ion-icon>

View File

@ -7,7 +7,7 @@ import { Platform } from '@ionic/angular';
import { OpenVidu, Publisher, Session, StreamEvent, StreamManager, Subscriber } from 'openvidu-browser';
import { throwError as observableThrowError } from 'rxjs';
import { catchError } from 'rxjs/operators';
declare var cordova;
@Component({
selector: 'app-root',
@ -16,13 +16,13 @@ import { catchError } from 'rxjs/operators';
})
export class AppComponent implements OnDestroy {
OPENVIDU_SERVER_URL = 'https://' + location.hostname + ':4443/';
OPENVIDU_SERVER_URL = 'https://' + location.hostname + ':4443';
OPENVIDU_SERVER_SECRET = 'MY_SECRET';
ANDROID_PERMISSIONS = [
this.androidPermissions.PERMISSION.CAMERA,
this.androidPermissions.PERMISSION.RECORD_AUDIO,
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS,
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS
];
// OpenVidu objects
@ -35,10 +35,6 @@ export class AppComponent implements OnDestroy {
mySessionId: string;
myUserName: string;
// Main video of the page, will be 'publisher' or one of the 'subscribers'
// Updated by click event
mainStreamManager: StreamManager;
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
@ -54,9 +50,23 @@ export class AppComponent implements OnDestroy {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
if (this.platform.is('ios') && this.platform.is('cordova')) {
this.initializeAdapterIosRtc();
}
});
}
initializeAdapterIosRtc() {
console.log('Initializing iosrct');
cordova.plugins.iosrtc.registerGlobals();
// load adapter.js (version 4.0.1)
const script2 = document.createElement('script');
script2.type = 'text/javascript';
script2.src = 'assets/libs/adapter-4.0.1.js';
script2.async = false;
document.head.appendChild(script2);
}
@HostListener('window:beforeunload')
beforeunloadHandler() {
// On window closed leave session
@ -98,21 +108,28 @@ export class AppComponent implements OnDestroy {
// 'getToken' method is simulating what your server-side should do.
// 'token' parameter should be retrieved and returned by your own backend
this.getToken().then((token) => {
// First param is the token got from OpenVidu Server. Second param can be retrieved by every user on event
// First param is the token got from OpenVidu Server. Second param will be used by every user on event
// 'streamCreated' (property Stream.connection.data), and will be appended to DOM as the user's nickname
this.session
.connect(token, { clientData: this.myUserName })
.then(() => {
// --- 5) Requesting and Checking Android Permissions
if (this.platform.is('cordova')) {
this.checkAndroidPermissions()
.then(() => this.initPublisher())
.catch((err) => console.error(err));
// Ionic platform
if (this.platform.is('android')) {
console.log('Android platform');
this.checkAndroidPermissions()
.then(() => this.initPublisher())
.catch(err => console.error(err));
} else if (this.platform.is('ios')) {
console.log('iOS platform');
this.initPublisher();
}
} else {
this.initPublisher();
}
})
.catch((error) => {
.catch(error => {
console.log('There was an error connecting to the session:', error.code, error.message);
});
});
@ -129,20 +146,15 @@ export class AppComponent implements OnDestroy {
resolution: '640x480', // The resolution of your video
frameRate: 30, // The frame rate of your video
insertMode: 'APPEND', // How the video is inserted in the target element 'video-container'
mirror: true, // Whether to mirror your local video or not
mirror: true // Whether to mirror your local video or not
});
// --- 6) Publish your stream ---
this.session.publish(publisher);
// Set the main video in the page to display our webcam and store our Publisher
this.mainStreamManager = publisher;
this.publisher = publisher;
}
updateMainStreamManager(streamManager: StreamManager) {
this.mainStreamManager = streamManager;
this.session.publish(publisher).then(() => {
// Store our Publisher
this.publisher = publisher;
});
}
leaveSession() {
@ -160,6 +172,12 @@ export class AppComponent implements OnDestroy {
this.generateParticipantInfo();
}
refreshVideos() {
if (this.platform.is('ios') && this.platform.is('cordova')) {
cordova.plugins.iosrtc.refreshVideos();
}
}
private checkAndroidPermissions(): Promise<any> {
return new Promise((resolve, reject) => {
this.platform.ready().then(() => {
@ -168,13 +186,13 @@ export class AppComponent implements OnDestroy {
.then(() => {
this.androidPermissions
.checkPermission(this.androidPermissions.PERMISSION.CAMERA)
.then((camera) => {
.then(camera => {
this.androidPermissions
.checkPermission(this.androidPermissions.PERMISSION.RECORD_AUDIO)
.then((audio) => {
.then(audio => {
this.androidPermissions
.checkPermission(this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS)
.then((modifyAudio) => {
.then(modifyAudio => {
if (camera.hasPermission && audio.hasPermission && modifyAudio.hasPermission) {
resolve();
} else {
@ -194,7 +212,7 @@ export class AppComponent implements OnDestroy {
);
}
})
.catch((err) => {
.catch(err => {
console.error(
'Checking permission ' +
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS +
@ -203,19 +221,19 @@ export class AppComponent implements OnDestroy {
reject(err);
});
})
.catch((err) => {
.catch(err => {
console.error(
'Checking permission ' + this.androidPermissions.PERMISSION.RECORD_AUDIO + ' failed',
);
reject(err);
});
})
.catch((err) => {
.catch(err => {
console.error('Checking permission ' + this.androidPermissions.PERMISSION.CAMERA + ' failed');
reject(err);
});
})
.catch((err) => console.error('Error requesting permissions: ', err));
.catch(err => console.error('Error requesting permissions: ', err));
});
});
}
@ -246,6 +264,10 @@ export class AppComponent implements OnDestroy {
*/
getToken(): Promise<string> {
if (this.platform.is('ios') && this.platform.is('cordova') && this.OPENVIDU_SERVER_URL === 'https://localhost:4443') {
// To make easier first steps with iOS apps, use demos OpenVidu Sever if no custom valid server is configured
this.OPENVIDU_SERVER_URL = 'https://demos.openvidu.io:4443';
}
return this.createSession(this.mySessionId).then((sessionId) => {
return this.createToken(sessionId);
});

View File

@ -20,8 +20,8 @@ import { UserVideoComponent } from './user-video.component';
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
AndroidPermissions,
AndroidPermissions
],
bootstrap: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }

View File

@ -1,32 +1,78 @@
import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';
import { StreamManager } from 'openvidu-browser';
import { AfterViewInit, Component, ElementRef, Input, ViewChild, OnDestroy } from '@angular/core';
import { StreamManager, StreamPropertyChangedEvent } from 'openvidu-browser';
import { Platform } from '@ionic/angular';
declare var cordova;
@Component({
selector: 'ov-video',
template: '<video #videoElement></video>',
styles: [
`
video {
width: inherit;
}
`,
],
template: '<video #videoElement></video>'
})
export class OpenViduVideoComponent implements AfterViewInit {
export class OpenViduVideoComponent implements AfterViewInit, OnDestroy {
@ViewChild('videoElement') elementRef: ElementRef;
_streamManager: StreamManager;
rotationFunction;
constructor(private platform: Platform) {}
ngAfterViewInit() {
this._streamManager.addVideoElement(this.elementRef.nativeElement);
if (this.isIos() && this._streamManager.remote) {
this.rotationFunction = () => {
// Give the remote video some time to update its dimensions when rotating the device
setTimeout(() => {
this.applyIosIonicVideoAttributes();
cordova.plugins.iosrtc.refreshVideos();
}, 250);
};
(<any>window).addEventListener('orientationchange', this.rotationFunction);
}
this.updateVideoView();
}
ngOnDestroy() {
if (!!this.rotationFunction) {
(<any>window).removeEventListener('orientationchange', this.rotationFunction);
}
}
@Input()
set streamManager(streamManager: StreamManager) {
this._streamManager = streamManager;
if (!!this.elementRef) {
this._streamManager.addVideoElement(this.elementRef.nativeElement);
if (this.isIos()) {
this._streamManager.on('streamPropertyChanged', event => {
if ((<StreamPropertyChangedEvent>event).changedProperty === 'videoDimensions') {
this.applyIosIonicVideoAttributes();
cordova.plugins.iosrtc.refreshVideos();
}
});
}
}
private updateVideoView() {
this._streamManager.addVideoElement(this.elementRef.nativeElement);
if (this.isIos()) {
(<HTMLVideoElement>this.elementRef.nativeElement).onloadedmetadata = () => {
this.applyIosIonicVideoAttributes();
};
}
}
private applyIosIonicVideoAttributes() {
const ratio = this._streamManager.stream.videoDimensions.height / this._streamManager.stream.videoDimensions.width;
this.elementRef.nativeElement.style.width = '100% !important';
this.elementRef.nativeElement.style.objectFit = 'fill';
this.elementRef.nativeElement.style.zIndex = '-1';
const computedWidth = this.elementRef.nativeElement.offsetWidth;
this.elementRef.nativeElement.style.height = computedWidth * ratio + 'px';
if (!this._streamManager.remote) {
// It is a Publisher video. Custom iosrtc plugin mirror video
this.elementRef.nativeElement.style.transform = 'scaleX(-1)';
}
cordova.plugins.iosrtc.refreshVideos();
}
private isIos(): boolean {
return this.platform.is('ios') && this.platform.is('cordova');
}
}

File diff suppressed because it is too large Load Diff

View File

@ -10,3 +10,6 @@
@import "~@ionic/angular/css/text-transformation.css";
@import "~@ionic/angular/css/flex-utils.css";
:root {
--ion-background-color: transparent;
}

File diff suppressed because it is too large Load Diff

View File

@ -11,38 +11,41 @@
},
"private": true,
"dependencies": {
"@angular/common": "7.0.0",
"@angular/compiler": "7.0.0",
"@angular/core": "7.0.0",
"@angular/forms": "7.0.0",
"@angular/http": "7.0.0",
"@angular/platform-browser": "7.0.0",
"@angular/platform-browser-dynamic": "7.0.0",
"@angular/router": "7.0.0",
"core-js": "2.5.7",
"@angular/animations": "7.1.3",
"@angular/cdk": "7.1.1",
"@angular/common": "7.1.3",
"@angular/compiler": "7.1.3",
"@angular/core": "7.1.3",
"@angular/forms": "7.1.3",
"@angular/http": "7.1.3",
"@angular/material": "7.1.1",
"@angular/platform-browser": "7.1.3",
"@angular/platform-browser-dynamic": "7.1.3",
"@angular/router": "7.1.3",
"core-js": "2.6.0",
"openvidu-angular": "2.6.0",
"rxjs": "6.3.3",
"zone.js": "0.8.26"
},
"devDependencies": {
"@angular/compiler-cli": "7.0.0",
"@angular-devkit/build-angular": "0.10.1",
"typescript": "3.1.3",
"@angular/cli": "7.0.1",
"@angular/language-service": "7.0.0",
"@types/jasmine": "2.8.9",
"@types/jasminewd2": "2.0.5",
"@types/node": "10.12.0",
"codelyzer": "4.4.4",
"jasmine-core": "3.2.1",
"@angular/compiler-cli": "7.1.3",
"@angular-devkit/build-angular": "0.11.3",
"@angular/cli": "7.1.3",
"@angular/language-service": "7.1.3",
"@types/jasmine": "3.3.1",
"@types/jasminewd2": "2.0.6",
"@types/node": "10.12.15",
"codelyzer": "4.5.0",
"jasmine-core": "3.3.0",
"jasmine-spec-reporter": "4.2.1",
"karma": "3.0.0",
"karma": "3.1.3",
"karma-chrome-launcher": "2.2.0",
"karma-coverage-istanbul-reporter": "2.0.4",
"karma-jasmine": "1.1.2",
"karma-jasmine-html-reporter": "1.3.1",
"karma-jasmine": "2.0.1",
"karma-jasmine-html-reporter": "1.4.0",
"protractor": "5.4.1",
"ts-node": "7.0.1",
"tslint": "5.11.0"
"tslint": "5.11.0",
"typescript": "3.1.6"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,9 @@
"dependencies": {
"axios": "0.18.0",
"openvidu-react": "2.6.0",
"react": "16.6.0",
"react-dom": "16.6.0",
"react-scripts": "2.0.5"
"react": "16.6.3",
"react-dom": "16.6.3",
"react-scripts": "2.1.1"
},
"scripts": {
"start": "react-scripts start",