123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- {
- This file is part of the Pas2JS run time library.
- Copyright (c) 2020 by the Pas2JS development team.
- This unit defines Jitsi external meet API
- (not to be confused with internal APIs)
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {$mode objfpc}
- {$modeswitch externalclass}
- unit libjitsimeet;
- interface
- uses
- JS, web;
- Const
- // Event names
- EventAudioAvailabilityChanged = 'audioAvailabilityChanged';
- EventAudioMuteStatusChanged = 'audioMuteStatusChanged';
- EventAvatarChanged = 'avatarChanged';
- EventCameraError = 'cameraError';
- EventDeviceListChanged = 'deviceListChanged';
- EventDisplayNameChange = 'displayNameChange';
- EventdominantSpeakerChanged = 'dominantSpeakerChanged';
- EventEmailChange = 'emailChange';
- EventEndpointTextMessageReceived = 'endpointTextMessageReceived';
- EventFeedbackSubmitted = 'feedbackSubmitted';
- EventFilmstripDisplayChanged = 'filmstripDisplayChanged';
- EventIncomingMessage = 'incomingMessage';
- EventMicError = 'micError';
- EventOutgoingMessage = 'outgoingMessage';
- EventParticipantJoined = 'participantJoined';
- EventParticipantKickedOut = 'participantKickedOut';
- EventParticipantLeft = 'participantLeft';
- EventPasswordRequired = 'passwordRequired';
- EventReadyToClose = 'readyToClose';
- EventScreenSharingStatusChanged = 'screenSharingStatusChanged';
- EventSubjectChange = 'subjectChange';
- EventSuspendDetected = 'suspendDetected';
- EventTileViewChanged = 'tileViewChanged';
- EventVideoAvailabilityChanged = 'videoAvailabilityChanged';
- EventVideoConferenceJoined = 'videoConferenceJoined';
- EventVideoConferenceLeft = 'videoConferenceLeft';
- EventVideoMuteStatusChanged = 'videoMuteStatusChanged';
- // Command names. You can use the class helper instead.
- CommandAvatarURL = 'avatarURL';
- CommandDisplayName = 'displayName';
- CommandEmail = 'email';
- CommandHangup = 'hangup';
- CommandPassword = 'password';
- CommandSendEndPointTextMessage = 'sendEndpointTextMessage';
- CommandSendTones = 'sendTones';
- CommandSubject = 'subject';
- CommandToggleAudio = 'toggleAudio';
- CommandToggleChat = 'toggleChat';
- CommandToggleFilmStrip = 'toggleFilmStrip';
- CommandToggleTileView = 'toggleTileView';
- CommandToggleVideo = 'toggleVideo';
- CommandToggleShareScreen = 'toggleShareScreen';
- // UI elements
- UIMicrophone = 'microphone';
- UICamera = 'camera';
- UIClosedCaptions = 'closedcaptions';
- UIDesktop = 'desktop';
- UIFullScreen = 'fullscreen';
- UIFODeviceSelection = 'fodeviceselection';
- UIHangup = 'hangup';
- UIChat = 'chat';
- UIRecording = 'recording';
- UILiveStreaming = 'livestreaming';
- UIEtherPad = 'etherpad';
- UISharedVideo = 'sharedvideo';
- UISettings = 'settings';
- UIVideoQuality = 'videoquality';
- UIFilmStrip = 'filmstrip';
- UIFeedBack = 'feedback';
- UIStats = 'stats';
- UIShortCuts = 'shortcuts';
- UITileView = 'tileview';
- UIVideoBackgroundBlur = 'videobackgroundblur';
- UIDownload = 'download';
- UIHelp = 'help';
- UIMuteEveryone = 'mute-everyone';
- UIProfile = 'profile';
- UIInfo = 'info';
- UIRaiseHand = 'raisehand';
- UIInvite = 'invite';
- UISettingDevices = 'devices';
- UISettingLanguage = 'language';
- UISettingModerator = 'moderator';
- UISettingProfile = 'profile';
- UISettingCalendar = 'calendar';
- Type
- // Not documented or possible to define statically :(
- TJMCommands = TJSObject;
- TJMInvite = TJSObject;
- TJMInviteDynArray = Array of TJMInvite;
- TJMEventHandler = reference to Procedure(Arg : JSValue);
- TJMInvitee = class external name 'Object' (TJSObject);
- TJMInviteeDynArray = array of TJMInvitee;
- TJMUIElement = (uieMicrophone, uieCamera, uieClosedCaptions, uieDesktop,
- uieFullScreen, uieFODeviceSelection, uieHangup, uieChat, uieRecording,
- uieLiveStreaming, uieEtherPad, uieSharedVideo, uieSettings, uieVideoQuality,
- uieFilmStrip, uieFeedBack, uieStats, uieShortCuts, uieTileView,
- uieVideoBackgroundBlur, uieDownload, uieHelp, uieMuteEveryone,
- uieProfile, uieInfo, uieRaiseHand, uieInvite);
- TJMUIElements = set of TJMUIElement;
- TJMUISetting = (usDevices, usLanguage, usModerator, usProfile, usCalendar);
- TJMUISettings = set of TJMUISetting;
- { TJMDevices }
- TJMDevices = class external name 'Object' (TJSObject)
- private
- FAudioInput: String; external name 'audioInput';
- FAudioOutput: String; external name 'audioOutput';
- FVideoInput: String; external name 'videoInput';
- Public
- Property AudioInput : String Read FAudioInput Write FAudioInput;
- Property audioOutput : String read FAudioOutput Write FAudioOutput;
- Property videoInput : String read FVideoInput Write FVideoInput;
- end;
- { TJMUserInfo }
- TJMUserInfo = class external name 'Object' (TJSObject)
- private
- FEmail: String; external name 'email';
- Public
- Property Email : String Read FEmail Write FEmail;
- end;
- { TJMInterfaceConfig }
- TJMInterfaceConfig = class external name 'Object' (TJSObject)
- private
- FAndroidAppPackage : string; external name 'ANDROID_APP_PACKAGE';
- FAppName: String; external name 'APP_NAME';
- FAppScheme : string; external name 'APP_SCHEME';
- FAudioLevelPrimaryColor : string; external name 'AUDIO_LEVEL_PRIMARY_COLOR';
- FAudioLevelSecondaryColor : string; external name 'AUDIO_LEVEL_SECONDARY_COLOR';
- FAuthenticationEnable: Boolean; external name 'AUTHENTICATION_ENABLE';
- FAutoPinLatestScreenShare : String; external name 'AUTO_PIN_LATEST_SCREEN_SHARE';
- FBrandWaterMarkLink: String; external name 'BRAND_WATERMARK_LINK';
- FClosePageGuestHint: String; external name 'CLOSE_PAGE_GUEST_HINT';
- FConnectionIndicatorAutoHideEnabled : boolean; external name 'CONNECTION_INDICATOR_AUTO_HIDE_ENABLED';
- FConnectionIndicatorAutoHideTimeout : nativeint ; external name 'CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT';
- FConnectionIndicatorDisabled : boolean; external name 'CONNECTION_INDICATOR_DISABLED';
- FDefaultBackground: String; external name 'DEFAULT_BACKGROUND';
- FDefaultLocalDisplayName: String; external name 'DEFAULT_LOCAL_DISPLAY_NAME';
- FDefaultRemoteDisplayName: String; external name 'DEFAULT_REMOTE_DISPLAY_NAME';
- FDisableDominantSpeakerIndicator: Boolean; external name 'DISABLE_DOMINANT_SPEAKER_INDICATOR';
- FDisableFocusIndicator: Boolean; external name 'DISABLE_FOCUS_INDICATOR';
- FDisableJoinLeaveNotifications :boolean ; external name 'DISABLE_JOIN_LEAVE_NOTIFICATIONS';
- FDisablePresenceStatus : boolean; external name 'DISABLE_PRESENCE_STATUS';
- FDisableRinging : Boolean; external name 'DISABLE_RINGING';
- FDisableTranscriptionSubtitles: Boolean; external name 'DISABLE_TRANSCRIPTION_SUBTITLES';
- FDisableVideoBackground: Boolean; external name 'DISABLE_VIDEO_BACKGROUND';
- FDisplayWelcomePageContent: Boolean; external name 'DISPLAY_WELCOME_PAGE_CONTENT';
- FDisplayWelcomePageToolbarAdditionalContent: Boolean; external name 'DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT';
- FEnableFeedBackAnimation: Boolean; external name 'ENABLE_FEEDBACK_ANIMATION';
- FEnforceNotificationAutoDismissTimeout : NativeInt; external name 'ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT';
- FFilmStripMaxHeight: NativeInt; external name 'FILM_STRIP_MAX_HEIGHT';
- FFilmStripOnly: Boolean; external name 'filmStripOnly';
- FGenerateRoomNamesOnWelcomePage: Boolean; external name 'GENERATE_ROOMNAMES_ON_WELCOME_PAGE';
- FInitialToolbarTimeOut: NativeInt; external name 'INITIAL_TOOLBAR_TIMEOUT';
- FInvitationPoweredBy: Boolean; external name 'INVITATION_POWERED_BY';
- FJitsiWaterMarkLink: String; external name 'JITSI_WATERMARK_LINK';
- FLangDetection: Boolean; external name 'LANG_DETECTION';
- FLiveStreamingHelpLink : string; external name 'LIVE_STREAMING_HELP_LINK';
- FLocalThumbnailRatio : double ; external name 'LOCAL_THUMBNAIL_RATIO';
- FMaximumZoomingCoefficient : double ; external name 'MAXIMUM_ZOOMING_COEFFICIENT';
- FMobileAppPromo :Boolean ; external name 'MOBILE_APP_PROMO';
- FMobileDownloadLinkAndroid : string ; external name 'MOBILE_DOWNLOAD_LINK_ANDROID';
- FMobileDownloadLinkIos : string; external name 'MOBILE_DOWNLOAD_LINK_IOS';
- FNativeAppName: STring; external name 'NATIVE_APP_NAME';
- FOptimalBrowsers : TStringDynArray ; external name 'OPTIMAL_BROWSERS';
- FPolicyLogo : string; external name 'POLICY_LOGO';
- FProviderName: string; external name 'PROVIDER_NAME';
- FRandomAvatarURLPrefix: String; external name 'RANDOM_AVATAR_URL_PREFIX';
- FRandomAvatarURLSuffix: String; external name 'RANDOM_AVATAR_URL_SUFFIX';
- FRecentListEnabled :boolean ; external name 'RECENT_LIST_ENABLED';
- FRemoteThumbnailRatio : double ; external name 'REMOTE_THUMBNAIL_RATIO';
- FSettingSections: TStringDynArray; external name 'SETTINGS_SECTIONS';
- FShowBrandWaterMark: Boolean; external name 'SHOW_BRAND_WATERMARK';
- FShowChromeExtensionBanner : Boolean; external name 'SHOW_CHROME_EXTENSION_BANNER';
- FShowDeepLinkingImage: Boolean; external name 'SHOW_DEEP_LINKING_IMAGE';
- FShowJitsiWaterMark: Boolean; external name 'SHOW_JITSI_WATERMARK';
- FShowPoweredBy: Boolean; external name 'SHOW_POWERED_BY';
- FShowPromotionalClosePage: Boolean; external name 'SHOW_PROMOTIONAL_CLOSE_PAGE';
- FShowWaterMarkForGuests: Boolean; external name 'SHOW_WATERMARK_FOR_GUESTS';
- FSupportUrl : string ; external name 'SUPPORT_URL';
- FTileViewMaxColumns : nativeint; external name 'TILE_VIEW_MAX_COLUMNS';
- FToolbarAlwaysVisible: Boolean; external name 'TOOLBAR_ALWAYS_VISIBLE';
- FToolbarButtons: TStringDynArray; external name 'TOOLBAR_BUTTONS';
- FToolbarTimeOut: NativeInt; external name 'TOOLBAR_TIMEOUT';
- FUnsupportedBrowsers : TStringDynArray; external name 'UNSUPPORTED_BROWSERS';
- FVerticalFilmStrip: Boolean; external name 'VERTICAL_FILMSTRIP';
- FVideoLayoutFit: String; external name 'VIDEO_LAYOUT_FIT';
- FVideoQualityLabelDisabled : boolean; external name 'VIDEO_QUALITY_LABEL_DISABLED';
- Public
- Property AndroidAppPackage : String Read FAndroidAppPackage write FAndroidAppPackage; // ANDROID_APP_PACKAGE: 'org.jitsi.meet',
- Property AppName : String Read FAppName Write FAppName; // APP_NAME: 'Jitsi Meet',
- Property AppScheme : String Read FAppScheme write FAppScheme; // APP_SCHEME: 'org.jitsi.meet',
- Property AudioLevelPrimaryColor : string Read FAudioLevelPrimaryColor write FAudioLevelPrimaryColor; // AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
- Property AudioLevelSecondaryColor : string Read FAudioLevelSecondaryColor write FAudioLevelSecondaryColor; // AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
- Property AuthenticationEnable : Boolean Read FAuthenticationEnable Write FAuthenticationEnable; // AUTHENTICATION_ENABLE: true,
- Property AutoPinLatestScreenShare : string Read FAutoPinLatestScreenShare write FAutoPinLatestScreenShare; // AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
- Property BrandWaterMarkLink : String Read FBrandWaterMarkLink Write FBrandWaterMarkLink; // BRAND_WATERMARK_LINK: '',
- Property ClosePageGuestHint : String Read FClosePageGuestHint Write FClosePageGuestHint; // CLOSE_PAGE_GUEST_HINT
- Property ConnectionIndicatorAutoHideEnabled : Boolean Read FConnectionIndicatorAutoHideEnabled write FConnectionIndicatorAutoHideEnabled; // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,
- Property ConnectionIndicatorAutoHideTimeout : NativeInt Read FConnectionIndicatorAutoHideTimeout write FConnectionIndicatorAutoHideTimeout; // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT: 5000,
- Property ConnectionIndicatorDisabled : Boolean Read FConnectionIndicatorDisabled write FConnectionIndicatorDisabled; // CONNECTION_INDICATOR_DISABLED: false,
- Property DefaultBackground : String Read FDefaultBackground Write FDefaultBackground; // DEFAULT_BACKGROUND: String;
- Property DefaultLocalDisplayName : String Read FDefaultLocalDisplayName Write FDefaultLocalDisplayName; // DEFAULT_LOCAL_DISPLAY_NAME: 'me',
- Property DefaultRemoteDisplayName : String Read FDefaultRemoteDisplayName Write FDefaultRemoteDisplayName; // DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
- Property DisableDominantSpeakerIndicator : Boolean Read FDisableDominantSpeakerIndicator Write FDisableDominantSpeakerIndicator; // DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
- Property DisableFocusIndicator: Boolean Read FDisableFocusIndicator Write FDisableFocusIndicator; // DISABLE_FOCUS_INDICATOR: true,
- Property DisableJoinLeaveNotifications : boolean Read FDisableJoinLeaveNotifications write FDisableJoinLeaveNotifications; // DISABLE_JOIN_LEAVE_NOTIFICATIONS: true
- Property DisablePresenceStatus : boolean Read FDisablePresenceStatus write FDisablePresenceStatus; // DISABLE_PRESENCE_STATUS: true,
- Property DisableRinging : Boolean Read FDisableRinging write FDisableRinging; // DISABLE_RINGING: false,
- Property DisableTranscriptionSubtitles : Boolean Read FDisableTranscriptionSubtitles Write FDisableTranscriptionSubtitles; // DISABLE_TRANSCRIPTION_SUBTITLES: false,
- Property DisableVideoBackground : Boolean Read FDisableVideoBackground Write FDisableVideoBackground; // DISABLE_VIDEO_BACKGROUND: false,
- Property DisplayWelcomePageContent : Boolean Read FDisplayWelcomePageContent Write FDisplayWelcomePageContent; // DISPLAY_WELCOME_PAGE_CONTENT: true,
- Property DisplayWelcomePageToolbarAdditionalContent : Boolean Read FDisplayWelcomePageToolbarAdditionalContent Write FDisplayWelcomePageToolbarAdditionalContent; // DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
- Property EnableFeedBackAnimation : Boolean Read FEnableFeedBackAnimation Write FEnableFeedBackAnimation; // ENABLE_FEEDBACK_ANIMATION: false,
- Property EnforceNotificationAutoDismissTimeout : Nativeint Read FEnforceNotificationAutoDismissTimeout write FEnforceNotificationAutoDismissTimeout; // ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000,
- Property FilmStripMaxHeight : NativeInt Read FFilmStripMaxHeight Write FFilmStripMaxHeight; // FILM_STRIP_MAX_HEIGHT: 120,
- Property FilmStripOnly : Boolean Read FFilmStripOnly Write FFilmStripOnly; // filmStripOnly: false,
- Property GenerateRoomNamesOnWelcomePage : Boolean Read FGenerateRoomNamesOnWelcomePage Write FGenerateRoomNamesOnWelcomePage; // GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
- Property InitialToolbarTimeOut : NativeInt Read FInitialToolbarTimeOut Write FInitialToolbarTimeOut; // INITIAL_TOOLBAR_TIMEOUT: 20000,
- Property InvitationPoweredBy : Boolean Read FInvitationPoweredBy Write FInvitationPoweredBy; // INVITATION_POWERED_BY: true,
- Property JitsiWaterMarkLink : String Read FJitsiWaterMarkLink Write FJitsiWaterMarkLink; // JITSI_WATERMARK_LINK: 'https://jitsi.org',
- Property LangDetection : Boolean Read FLangDetection Write FLangDetection; // LANG_DETECTION: false, // Allow i18n to detect the system language
- Property LiveStreamingHelpLink : string Read FLiveStreamingHelpLink write FLiveStreamingHelpLink; // LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
- Property LocalThumbnailRatio : Double Read FLocalThumbnailRatio write FLocalThumbnailRatio; // LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
- Property MaximumZoomingCoefficient : Double Read FMaximumZoomingCoefficient write FMaximumZoomingCoefficient; // MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
- Property MobileAppPromo : Boolean Read FMobileAppPromo write FMobileAppPromo; // MOBILE_APP_PROMO: true,
- Property MobileDownloadLinkAndroid : String Read FMobileDownloadLinkAndroid write FMobileDownloadLinkAndroid; // MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
- Property MobileDownloadLinkIos : String Read FMobileDownloadLinkIos write FMobileDownloadLinkIos; // MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
- Property NativeAppName : STring Read FNativeAppName Write FNativeAppName; // NATIVE_APP_NAME: 'Jitsi Meet',
- Property OptimalBrowsers : TStringDynArray Read FOptimalBrowsers write FOptimalBrowsers; // OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'nwjs', 'electron' ],
- Property PolicyLogo : String Read FPolicyLogo write FPolicyLogo; // POLICY_LOGO: null,
- Property ProviderName : string Read FProviderName Write FProviderName; // PROVIDER_NAME: 'Jitsi',
- Property RandomAvatarURLPrefix : String Read FRandomAvatarURLPrefix Write FRandomAvatarURLPrefix; // RANDOM_AVATAR_URL_PREFIX
- Property RandomAvatarURLSuffix : String Read FRandomAvatarURLSuffix Write FRandomAvatarURLSuffix; // RANDOM_AVATAR_URL_SUFFIX
- Property RecentListEnabled : Boolean Read FRecentListEnabled write FRecentListEnabled; // RECENT_LIST_ENABLED: true,
- Property RemoteThumbnailRatio : Double Read FRemoteThumbnailRatio write FRemoteThumbnailRatio; // REMOTE_THUMBNAIL_RATIO: 1, // 1:1
- Property SettingSections : TStringDynArray Read FSettingSections Write FSettingSections; // SETTINGS_SECTIONS:
- Property ShowBrandWaterMark : Boolean Read FShowBrandWaterMark Write FShowBrandWaterMark; // SHOW_BRAND_WATERMARK: false,
- Property ShowChromeExtensionBanner : boolean Read FShowChromeExtensionBanner write FShowChromeExtensionBanner; // SHOW_CHROME_EXTENSION_BANNER: true,
- Property ShowDeepLinkingImage : Boolean Read FShowDeepLinkingImage Write FShowDeepLinkingImage; // SHOW_DEEP_LINKING_IMAGE: false,
- Property ShowJitsiWaterMark : Boolean Read FShowJitsiWaterMark Write FShowJitsiWaterMark; // SHOW_JITSI_WATERMARK: true,
- Property ShowPoweredBy : Boolean Read FShowPoweredBy Write FShowPoweredBy; // SHOW_POWERED_BY: false,
- Property ShowPromotionalClosePage : Boolean Read FShowPromotionalClosePage Write FShowPromotionalClosePage; // SHOW_PROMOTIONAL_CLOSE_PAGE
- Property ShowWaterMarkForGuests : Boolean Read FShowWaterMarkForGuests Write FShowWaterMarkForGuests; // SHOW_WATERMARK_FOR_GUESTS: true,
- Property SupportUrl : String Read FSupportUrl write FSupportUrl; // SUPPORT_URL: 'https://github.com/jitsi/jitsi-meet/issues/new',
- Property TileViewMaxColumns : NativeInt Read FTileViewMaxColumns write FTileViewMaxColumns; // TILE_VIEW_MAX_COLUMNS: 5,
- Property ToolbarAlwaysVisible: Boolean Read FToolbarAlwaysVisible Write FToolbarAlwaysVisible; // TOOLBAR_ALWAYS_VISIBLE: false,
- Property ToolbarButtons : TStringDynArray Read FToolbarButtons Write FToolbarButtons; // TOOLBAR_BUTTONS:
- Property ToolbarTimeOut : NativeInt Read FToolbarTimeOut Write FToolbarTimeOut; // TOOLBAR_TIMEOUT: 4000,
- Property UnsupportedBrowsers : TStringDynArray Read FUnsupportedBrowsers write FUnsupportedBrowsers; // UNSUPPORTED_BROWSERS: [],
- Property VerticalFilmStrip : Boolean Read FVerticalFilmStrip Write FVerticalFilmStrip; // VERTICAL_FILMSTRIP: true,
- Property VideoLayoutFit : String Read FVideoLayoutFit Write FVideoLayoutFit; // VIDEO_LAYOUT_FIT: 'both',
- Property VideoQualityLabelDisabled : Boolean Read FVideoQualityLabelDisabled write FVideoQualityLabelDisabled; // VIDEO_QUALITY_LABEL_DISABLED: false,
- end;
- TJMMeetOptions = class external name 'Object' (TJSObject)
- Public
- roomName : String;
- width : Integer;
- widthString : String; external name 'width';
- height : Integer;
- heightString : String; external name 'height';
- parentNode : TJSHTMLElement;
- configOverwrite: TJSObject;
- interfaceConfigOverwrite: TJMInterfaceConfig;
- noSSL : Boolean;
- jwt : String;
- onload : TJSRawEventHandler;
- invitees : TJMInviteeDynArray;
- devices : TJMDevices;
- userInfo : TJMUserInfo;
- end;
- { TJMMediaDevice }
- TJMMediaDevice = class external name 'Object' (TJSObject)
- private
- FDeviceID: String; external name 'deviceId';
- FGroupID: String; external name 'groupId';
- FKind: String; external name 'lind';
- FLabel: String; external name 'label';
- public
- Property DeviceId : String Read FDeviceID;
- Property GroupId : String Read FGroupID;
- Property Kind : String Read FKind;
- Property Label_ : String read FLabel;
- end;
- TJMMediaDeviceDynArray = Array of TJMMediaDevice;
- { TJMAvailableDevicesResponse }
- TJMAvailableDevicesResponse = class external name 'Object' (TJSObject)
- private
- FAudioInput: TJMMediaDeviceDynArray; external name 'audioInput';
- FAudioOutput: TJMMediaDeviceDynArray; external name 'audioOutput';
- FVideoInput: TJMMediaDeviceDynArray; external name 'videoInput';
- Public
- property AudioInput : TJMMediaDeviceDynArray read FAudioInput;
- property AudioOutput : TJMMediaDeviceDynArray read FAudioOutput;
- property VideoInput : TJMMediaDeviceDynArray Read FVideoInput;
- end;
- { TJMCurrentDevicesResponse }
- TJMCurrentDevicesResponse = class external name 'Object' (TJSObject)
- private
- fAudioInput: TJMMediaDeviceDynArray; external name 'audioInput';
- fAudioOutput: TJMMediaDeviceDynArray; external name 'audioOutput';
- fVideoInput: TJMMediaDeviceDynArray; external name 'videoInput';
- Public
- property AudioInput : TJMMediaDeviceDynArray read fAudioInput;
- property AudioOutput : TJMMediaDeviceDynArray read fAudioOutput;
- property VideoInput : TJMMediaDeviceDynArray read fVideoInput;
- end;
- TJMEventEmitter = class external name 'Object' (TJSObject)
- Public
- Procedure addListener(aName : String; aCallBack : TJMEventHandler);
- Procedure On_(aName : String; aCallBack : TJMEventHandler); external name 'on';
- Procedure Off(aName : String; aCallBack : TJMEventHandler); external name 'off';
- Procedure removeAllListeners(aName : String);
- Procedure removeListener(aName : String; aCallBack : TJMEventHandler);
- end;
- TJMExternalAPI = class external name 'JitsiMeetExternalAPI' (TJMEventEmitter)
- Public
- Constructor new (aDomain : String; aOptions : TJMMeetOptions);
- Procedure dispose;
- Procedure executeCommand(aCommand : String); overload;
- Procedure executeCommand(aCommand : String; Arg : String); overload;
- Procedure executeCommand(aCommand : String; Arg1,Arg2 : String); overload;
- Procedure executeCommand(aCommand : String; Options : TJSObject); overload;
- Procedure executeCommands(commands : TJMCommands);
- Function getAvailableDevices : TJSPromise;
- Function getAvatarURL : String;
- Function getCurrentDevices : TJSPromise;
- Function getDisplayName : String;
- Function getEmail : String;
- Function getIFrame : TJSHTMLElement;
- Function getNumberOfParticipants : NativeInt;
- Function invite(aInvitees : TJMInviteDynArray): TJSPromise;
- Function isAudioAvailable : TJSPromise;
- Function isAudioMuted : TJSPromise;
- Function isDeviceChangeAvailable(const aDeviceType : String) : TJSPromise;
- Function isDeviceListAvailable : TJSPromise;
- Function isMultipleAudioInputSupported : TJSPromise;
- Function isVideoAvailable : TJSPromise;
- Function isVideoMuted : TJSPromise;
- Procedure setAudioInputDevice(const aDeviceLabel,aDeviceId : String);
- Procedure setAudioOutputDevice(const aDeviceLabel,aDeviceId : String);
- Procedure setVideoInputDevice(const aDeviceLabel,aDeviceId : String);
- end;
- { TJSMSendTones }
- TJMSendTones = class external name 'Object' (TJSObject)
- private
- FDuration: NativeInt; external name 'duration';
- FPause: NativeInt; external name 'pause';
- FTones: String; external name 'tones';
- Public
- Property Tones : String Read FTones Write FTones;
- Property Duration : NativeInt Read FDuration Write FDuration;
- Property Pause : NativeInt Read FPause Write FPause;
- end;
- { TJMExternalAPIHelper }
- TJMExternalAPIHelper = class helper for TJMExternalAPI
- Public
- procedure SetDisplayName (Const aName : string);
- procedure SetPassword (Const aPassword : string);
- procedure SendTones (aTones :TJMSendTones);
- procedure SetSubject(Const aSubject : string);
- procedure ToggleAudio;
- procedure ToggleVideo;
- procedure ToggleFilmStrip;
- procedure ToggleChat;
- procedure ToggleShareScreen;
- procedure ToggleTileView;
- procedure Hangup;
- procedure Email(Const aEmail : string);
- procedure AvatarURL(Const aURL : string);
- procedure SendEndPointTextMessage(Const aParticipantID,aText : string);
- end;
- function UIElementsStrings(aElements : TJMUIElements) : TStringDynArray;
- function UISettingsStrings(aUISettings : TJMUISettings) : TStringDynArray;
- Const
- UIElementNames : Array[TJMUIElement] of string = (
- UIMicrophone, UICamera, UIClosedCaptions, UIDesktop,
- UIFullScreen, UIFODeviceSelection, UIHangup, UIChat, UIRecording,
- UILiveStreaming, UIEtherPad, UISharedVideo, UISettings, UIVideoQuality,
- UIFilmStrip, UIFeedBack, UIStats, UIShortCuts, UITileView,
- UIVideoBackgroundBlur, UIDownload, UIHelp, UIMuteEveryone,
- UIProfile, UIInfo, UIRaiseHand, UIInvite
- );
- UISettingNames : Array[TJMUISetting] of string =
- (UISettingDevices, UISettingLanguage, UISettingModerator, UISettingProfile, UISettingCalendar);
- implementation
- { TJMExternalAPIHelper }
- procedure TJMExternalAPIHelper.SetDisplayName(const aName: string);
- begin
- ExecuteCommand(CommandDisplayName,aName);
- end;
- procedure TJMExternalAPIHelper.SetPassword(const aPassword: string);
- begin
- ExecuteCommand(CommandPassword,aPassword);
- end;
- procedure TJMExternalAPIHelper.SendTones(aTones: TJMSendTones);
- begin
- executeCommand(CommandSendTones,aTones);
- end;
- procedure TJMExternalAPIHelper.SetSubject(const aSubject: string);
- begin
- ExecuteCommand(CommandSubject,aSubject);
- end;
- procedure TJMExternalAPIHelper.ToggleAudio;
- begin
- ExecuteCommand(CommandToggleAudio);
- end;
- procedure TJMExternalAPIHelper.ToggleVideo;
- begin
- ExecuteCommand(CommandToggleVideo);
- end;
- procedure TJMExternalAPIHelper.ToggleFilmStrip;
- begin
- ExecuteCommand(CommandToggleFilmStrip);
- end;
- procedure TJMExternalAPIHelper.ToggleChat;
- begin
- ExecuteCommand(CommandToggleChat);
- end;
- procedure TJMExternalAPIHelper.ToggleShareScreen;
- begin
- ExecuteCommand(CommandToggleShareScreen);
- end;
- procedure TJMExternalAPIHelper.ToggleTileView;
- begin
- ExecuteCommand(CommandToggleTileView);
- end;
- procedure TJMExternalAPIHelper.Hangup;
- begin
- ExecuteCommand(CommandHangup);
- end;
- procedure TJMExternalAPIHelper.Email(const aEmail: string);
- begin
- ExecuteCommand(commandEmail,aEmail);
- end;
- procedure TJMExternalAPIHelper.AvatarURL(const aURL: string);
- begin
- ExecuteCommand(CommandAvatarURL,aURL);
- end;
- procedure TJMExternalAPIHelper.SendEndPointTextMessage(const aParticipantID, aText: string);
- begin
- ExecuteCommand(CommandSendEndPointTextMessage,aParticipantID,atext);
- end;
- function UISettingsStrings(aUISettings: TJMUISettings): TStringDynArray;
- Var
- Len: Integer;
- S : TJMUISetting;
- begin
- Len:=0;
- SetLength(Result,Ord(High(TJMUISetting)));
- For S in TJMUISetting do
- if S in aUISettings then
- begin
- Result[Len]:=UISettingNames[S];
- Inc(Len);
- end;
- SetLength(Result,len);
- end;
- function UIElementsStrings(aElements: TJMUIElements): TStringDynArray;
- Var
- Len: Integer;
- J : TJMUIElement;
- begin
- Len:=0;
- SetLength(Result,Ord(High(TJMUIElement)));
- For J in TJMUIElement do
- if J in aElements then
- begin
- Result[Len]:=UIElementNames[J];
- Inc(Len);
- end;
- SetLength(Result,len);
- end;
- end.
|