| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- /*
 -  * Copyright @ 2017-present Atlassian Pty Ltd
 -  *
 -  * Licensed under the Apache License, Version 2.0 (the "License");
 -  * you may not use this file except in compliance with the License.
 -  * You may obtain a copy of the License at
 -  *
 -  *     http://www.apache.org/licenses/LICENSE-2.0
 -  *
 -  * Unless required by applicable law or agreed to in writing, software
 -  * distributed under the License is distributed on an "AS IS" BASIS,
 -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 -  * See the License for the specific language governing permissions and
 -  * limitations under the License.
 -  */
 - 
 - import UIKit
 - import JitsiMeet
 - 
 - class ViewController: UIViewController {
 - 
 -     @IBOutlet weak var videoButton: UIButton?
 - 
 -     fileprivate var pipViewCoordinator: PiPViewCoordinator?
 -     fileprivate var jitsiMeetView: JitsiMeetView?
 - 
 -     override func viewDidLoad() {
 -         super.viewDidLoad()
 -     }
 - 
 -     override func viewWillTransition(to size: CGSize,
 -                                      with coordinator: UIViewControllerTransitionCoordinator) {
 -         super.viewWillTransition(to: size, with: coordinator)
 - 
 -         let rect = CGRect(origin: CGPoint.zero, size: size)
 -         pipViewCoordinator?.resetBounds(bounds: rect)
 -     }
 - 
 -     // MARK: - Actions
 - 
 -     @IBAction func openJitsiMeet(sender: Any?) {
 -         cleanUp()
 - 
 -         // create and configure jitsimeet view
 -         let jitsiMeetView = JitsiMeetView()
 -         jitsiMeetView.welcomePageEnabled = true
 -         jitsiMeetView.pictureInPictureEnabled = true
 -         jitsiMeetView.load(nil)
 -         jitsiMeetView.delegate = self
 -         self.jitsiMeetView = jitsiMeetView
 - 
 -         // Enable jitsimeet view to be a view that can be displayed
 -         // on top of all the things, and let the coordinator to manage
 -         // the view state and interactions
 -         pipViewCoordinator = PiPViewCoordinator(withView: jitsiMeetView)
 -         pipViewCoordinator?.configureAsStickyView(withParentView: view)
 - 
 -         // animate in
 -         jitsiMeetView.alpha = 0
 -         pipViewCoordinator?.show()
 -     }
 - 
 -     fileprivate func cleanUp() {
 -         jitsiMeetView?.removeFromSuperview()
 -         jitsiMeetView = nil
 -         pipViewCoordinator = nil
 -     }
 - }
 - 
 - extension ViewController: JitsiMeetViewDelegate {
 - 
 -     func conferenceFailed(_ data: [AnyHashable : Any]!) {
 -         hideJitsiMeetViewAndCleanUp()
 -     }
 - 
 -     func conferenceLeft(_ data: [AnyHashable : Any]!) {
 -         hideJitsiMeetViewAndCleanUp()
 -     }
 - 
 -     func enterPicture(inPicture data: [AnyHashable : Any]!) {
 -         DispatchQueue.main.async {
 -             self.pipViewCoordinator?.enterPictureInPicture()
 -         }
 -     }
 - 
 -     private func hideJitsiMeetViewAndCleanUp() {
 -         DispatchQueue.main.async {
 -             self.pipViewCoordinator?.hide() { _ in
 -                 self.cleanUp()
 -             }
 -         }
 -     }
 - }
 
 
  |