From 4cac832c36a2babc358aaad01d5bcc3167681cd6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 15:40:23 +0200 Subject: [PATCH 1/6] Fix theolive api references --- theolive/contribution/software-encoders/obs.md | 2 +- theolive/contribution/software-encoders/vmix.md | 2 +- theolive/contribution/software-encoders/wirecast.md | 2 +- theolive/contribution/stream-configuration.mdx | 2 +- theolive/getting-started.mdx | 10 +++++----- theolive/platform/redundancy.md | 4 ++-- theolive/platform/security/geo-blocking.md | 2 +- theolive/platform/security/ip-blocking.md | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/theolive/contribution/software-encoders/obs.md b/theolive/contribution/software-encoders/obs.md index bc12bc324c4f..effe19e529b4 100644 --- a/theolive/contribution/software-encoders/obs.md +++ b/theolive/contribution/software-encoders/obs.md @@ -60,7 +60,7 @@ Hit apply on settings, close the window, and click on _Start Streaming_ in the _ Your THEOlive channel must be started in order to receive video ingest from OBS. You can choose to start up your channel before or after you start streaming via OBS. -Starting a channel can be done either [through the API](../../api/start-a-channel-will-start-all-connected-engines.api.mdx) or via [the console](https://console.theo.live/). +Starting a channel can be done either [through the API](../../api/start-channel.api.mdx) or via [the console](https://console.theo.live/). ![Start your channel](../../assets/img/consolechannelstart.png) diff --git a/theolive/contribution/software-encoders/vmix.md b/theolive/contribution/software-encoders/vmix.md index 6214954f188e..54377fde8b73 100644 --- a/theolive/contribution/software-encoders/vmix.md +++ b/theolive/contribution/software-encoders/vmix.md @@ -57,4 +57,4 @@ You can now save and exit out of all the _Streaming Settings_ menus and click th ## 4. Start your THEOlive channel -This can be done either through the [API](../../api/start-a-channel-will-start-all-connected-engines.api.mdx) or via the [management console](https://console.theo.live/). +This can be done either through the [API](../../api/start-channel.api.mdx) or via the [management console](https://console.theo.live/). diff --git a/theolive/contribution/software-encoders/wirecast.md b/theolive/contribution/software-encoders/wirecast.md index 11fe44750b58..816d7c724243 100644 --- a/theolive/contribution/software-encoders/wirecast.md +++ b/theolive/contribution/software-encoders/wirecast.md @@ -68,4 +68,4 @@ Click the "Stream" button. Wirecast will make a connection to the THEOlive RTMP ## 4. Start your THEOlive channel -This can be done either through the [API](../../api/start-a-channel-will-start-all-connected-engines.api.mdx) or via the [management console](https://console.theo.live/). +This can be done either through the [API](../../api/start-channel.api.mdx) or via the [management console](https://console.theo.live/). diff --git a/theolive/contribution/stream-configuration.mdx b/theolive/contribution/stream-configuration.mdx index d31d0fd59501..7db6f176ceaf 100644 --- a/theolive/contribution/stream-configuration.mdx +++ b/theolive/contribution/stream-configuration.mdx @@ -14,7 +14,7 @@ THEOlive offers pre-defined ABR profiles (or "presets") which allows you to adju ## Setting the stream configuration via the `streamConfig` object -The goal is to pass a `streamConfig` object during the [creation](../api/create-a-new-channel.api.mdx) of a channel, or when [updating](../api/update-a-channel-by-id.api.mdx) it. This object consists of: +The goal is to pass a `streamConfig` object during the [creation](../api/create-channel.api.mdx) of a channel, or when [updating](../api/update-channel.api.mdx) it. This object consists of: - `bitrate`: the max bitrate value that will be used in Mbps. - `resolution`: the max resolution that will be used. Possible values: `"1080p"`, `"720p"`, `"576p"`, `"480p"`. diff --git a/theolive/getting-started.mdx b/theolive/getting-started.mdx index 1248ba79c730..8fdd166a50a7 100644 --- a/theolive/getting-started.mdx +++ b/theolive/getting-started.mdx @@ -5,7 +5,7 @@ sidebar_label: Getting started # Backend -THEOlive provides a REST API to manage channels, configure them and start / stop them. Each possible call can be found at our [API Reference](./api/create-a-new-channel.api.mdx). +THEOlive provides a REST API to manage channels, configure them and start / stop them. Each possible call can be found at our [API Reference](./api/create-channel.api.mdx). However, to make things easier for non-developers, we built a management console on top of these API calls which makes it straightforward to perform the basic actions. To be able to create and use a THEOlive channel, you should register for an account and get a token to perform [authenticated requests](./platform/authorization.mdx) to our API. @@ -19,7 +19,7 @@ Once you've entered your username and password, you can already create your firs :::info 📘 API reference -This guide describes how to get started with the THEOlive management console. Please consult the [API reference](./api/create-a-new-channel.api.mdx) and [Authorization](./platform/authorization.mdx) if you would like to work with API calls. +This guide describes how to get started with the THEOlive management console. Please consult the [API reference](./api/create-channel.api.mdx) and [Authorization](./platform/authorization.mdx) if you would like to work with API calls. ::: ## 2. Create your first channel @@ -32,7 +32,7 @@ When hitting 'Create', you will be navigated towards the Details page of your ne ![](assets/img/467abb8-overview.PNG 'Management console: Details page with the possibility to start your channel and options to customize your player.') -A channel can also be created through an API call to the `channels` endpoint, passing an ingest location and a name. It will return an `id` that you can use to start, stop, update or delete the channel later on. Also, a `streamKey` and `rtmpPushUrl` will be returned to stream your content to. More information about the Create channel endpoint and how to pass advanced properties can be found [here](./api/create-a-new-channel.api.mdx). +A channel can also be created through an API call to the `channels` endpoint, passing an ingest location and a name. It will return an `id` that you can use to start, stop, update or delete the channel later on. Also, a `streamKey` and `rtmpPushUrl` will be returned to stream your content to. More information about the Create channel endpoint and how to pass advanced properties can be found [here](./api/create-channel.api.mdx). ```curl curl --location --request POST 'https://api.theo.live/channels' @@ -95,7 +95,7 @@ You can easily start your channel on the channel details page, by clicking on th ![](assets/img/cbe288c-start.PNG) -In the background this will make a `POST` request to the `channels/start` endpoint. You can also start a channel via the Start channel API call, for which you can find more information [here](./api/start-a-channel-will-start-all-connected-engines.api.mdx). As mentioned in the last section, you can optionally pass the `rtmpPullUrl` property in the body of the request for pull-based streaming. Don't forget to stop streaming when you are done! +In the background this will make a `POST` request to the `channels/start` endpoint. You can also start a channel via the Start channel API call, for which you can find more information [here](./api/start-channel.api.mdx). As mentioned in the last section, you can optionally pass the `rtmpPullUrl` property in the body of the request for pull-based streaming. Don't forget to stop streaming when you are done! ```curl curl --location --request POST 'https://api.theo.live/channels/{channel-id}/start' \ @@ -108,7 +108,7 @@ curl --location --request POST 'https://api.theo.live/channels/{channel-id}/star ## 6. Stop the channel -Have you finished your real-time streaming? Make sure to stop your channel by making a request to the `channels/stop` endpoint, either through a [Stop channel](./api/stop-a-channel-will-stop-all-connected-engines.api.mdx) API call or by pressing the red "stop" button in the management console. +Have you finished your real-time streaming? Make sure to stop your channel by making a request to the `channels/stop` endpoint, either through a [Stop channel](./api/stop-channel.api.mdx) API call or by pressing the red "stop" button in the management console. ```curl curl --location --request POST 'https://api.theo.live/channels/{channel-id}/stop' \ diff --git a/theolive/platform/redundancy.md b/theolive/platform/redundancy.md index da968ff5eb5b..9249b590f18d 100644 --- a/theolive/platform/redundancy.md +++ b/theolive/platform/redundancy.md @@ -23,7 +23,7 @@ In what follows, we describe the approach to set a fallback for one channel. ## 1. Create two channels and start them. -You'll need to create two THEOlive channels via the [API](../api/create-a-new-channel.api.mdx) or [management console](https://console.theo.live/). Let's say for example that we have the following channels with fictive IDs: +You'll need to create two THEOlive channels via the [API](../api/create-channel.api.mdx) or [management console](https://console.theo.live/). Let's say for example that we have the following channels with fictive IDs: - Channel `` which is located in the `us-west` region - Channel `` which is located in the `us-east` region @@ -52,7 +52,7 @@ This will work as follows: 5. This process will continue to work this way. If both streams are unavailable, the pre-live settings will be shown (an announcement message and optionally a poster image too). 6. When the primary channel is stopped, all players will stop playing (even if the fallback channel is still streaming). -For more information, please visit our [API Reference](../api/update-a-channel-by-id.api.mdx). +For more information, please visit our [API Reference](../api/update-channel.api.mdx). Note that the fallback can also easily be set in our management console on the Channel Details page. Scroll down to the **Playout Configurations** section and select the _Fallback_ tab. diff --git a/theolive/platform/security/geo-blocking.md b/theolive/platform/security/geo-blocking.md index 65990fe30976..b983c97d6d15 100644 --- a/theolive/platform/security/geo-blocking.md +++ b/theolive/platform/security/geo-blocking.md @@ -8,7 +8,7 @@ Geo-blocking can be configured via the API or the console. ### Main channel -You can enable geo-blocking on a channel by [updating](../../api/update-a-channel-by-id.api.mdx) the `geoBlocking` object within `publicationConfig`. The `mode` of geo-blocking can also be configured: +You can enable geo-blocking on a channel by [updating](../../api/update-channel.api.mdx) the `geoBlocking` object within `publicationConfig`. The `mode` of geo-blocking can also be configured: - `whitelist`: Used by default when no `mode` is passed. This will make the content only available in the countries that have been specified in the `countries` property. Countries not listed in the `countries` property will not receive the stream. - `blacklist`: Blocks the content in the countries that have been specified in the `countries` property. All other countries not specified in the `countries` property will be able to view the content. diff --git a/theolive/platform/security/ip-blocking.md b/theolive/platform/security/ip-blocking.md index 727085d908e3..772a7244a7b9 100644 --- a/theolive/platform/security/ip-blocking.md +++ b/theolive/platform/security/ip-blocking.md @@ -8,7 +8,7 @@ IP-blocking can be configured via the API or the console. ### Main channel -You can enable IP-blocking on a channel by [updating](../../api/update-a-channel-by-id.api.mdx) the `ipBlocking` object within `publicationConfig`. The `mode` of geo-blocking can also be configured: +You can enable IP-blocking on a channel by [updating](../../api/update-channel.api.mdx) the `ipBlocking` object within `publicationConfig`. The `mode` of geo-blocking can also be configured: - `whitelist`: Used by default when no `mode` is passed. This will make the content only available for the CIDRs that have been specified in the `cidrs` property. CIDRs not listed in the `cidrs` property will not receive the stream. - `blacklist`: Blocks the content for the CIDRs that have been specified in the `cidrs` property. All CIDRs not specified in the `cidrs` property will be able to view the content. From 3c8c5b85ea288d8236c55432d2236445b44d7860 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 14:28:59 +0200 Subject: [PATCH 2/6] Add react-native-connectors submodules --- .gitmodules | 22 ++++++++++++++++++- theoplayer/external/react-native-connectors | 1 + .../external/react-native-connectors | 1 + .../external/react-native-connectors | 1 + .../external/react-native-connectors | 1 + 5 files changed, 25 insertions(+), 1 deletion(-) create mode 160000 theoplayer/external/react-native-connectors create mode 160000 theoplayer_versioned_docs/version-v7/external/react-native-connectors create mode 160000 theoplayer_versioned_docs/version-v8/external/react-native-connectors create mode 160000 theoplayer_versioned_docs/version-v9/external/react-native-connectors diff --git a/.gitmodules b/.gitmodules index 9a8dffd2a33e..f940d8bb2583 100644 --- a/.gitmodules +++ b/.gitmodules @@ -101,6 +101,26 @@ path = theoplayer_versioned_docs/version-v9/external/iOS-Connector url = https://github.com/THEOplayer/iOS-Connector.git branch = 9.x +[submodule "react-native-connectors"] + path = theoplayer/external/react-native-connectors + url = https://github.com/THEOplayer/react-native-connectors.git + branch = main + shallow = true +[submodule "react-native-connectors-v7"] + path = theoplayer_versioned_docs/version-v7/external/react-native-connectors + url = https://github.com/THEOplayer/react-native-connectors.git + branch = main + shallow = true +[submodule "react-native-connectors-v8"] + path = theoplayer_versioned_docs/version-v8/external/react-native-connectors + url = https://github.com/THEOplayer/react-native-connectors.git + branch = main + shallow = true +[submodule "react-native-connectors-v9"] + path = theoplayer_versioned_docs/version-v9/external/react-native-connectors + url = https://github.com/THEOplayer/react-native-connectors.git + branch = main + shallow = true [submodule "web-ui"] path = open-video-ui/external/web-ui url = https://github.com/THEOplayer/web-ui.git @@ -112,4 +132,4 @@ [submodule "react-native-theoplayer-ui"] path = open-video-ui/external/react-native-theoplayer-ui url = https://github.com/THEOplayer/react-native-theoplayer-ui.git - branch = main + branch = main \ No newline at end of file diff --git a/theoplayer/external/react-native-connectors b/theoplayer/external/react-native-connectors new file mode 160000 index 000000000000..8b31580d1171 --- /dev/null +++ b/theoplayer/external/react-native-connectors @@ -0,0 +1 @@ +Subproject commit 8b31580d1171c31811908c99aa8a996ac8136170 diff --git a/theoplayer_versioned_docs/version-v7/external/react-native-connectors b/theoplayer_versioned_docs/version-v7/external/react-native-connectors new file mode 160000 index 000000000000..8b31580d1171 --- /dev/null +++ b/theoplayer_versioned_docs/version-v7/external/react-native-connectors @@ -0,0 +1 @@ +Subproject commit 8b31580d1171c31811908c99aa8a996ac8136170 diff --git a/theoplayer_versioned_docs/version-v8/external/react-native-connectors b/theoplayer_versioned_docs/version-v8/external/react-native-connectors new file mode 160000 index 000000000000..8b31580d1171 --- /dev/null +++ b/theoplayer_versioned_docs/version-v8/external/react-native-connectors @@ -0,0 +1 @@ +Subproject commit 8b31580d1171c31811908c99aa8a996ac8136170 diff --git a/theoplayer_versioned_docs/version-v9/external/react-native-connectors b/theoplayer_versioned_docs/version-v9/external/react-native-connectors new file mode 160000 index 000000000000..8b31580d1171 --- /dev/null +++ b/theoplayer_versioned_docs/version-v9/external/react-native-connectors @@ -0,0 +1 @@ +Subproject commit 8b31580d1171c31811908c99aa8a996ac8136170 From 44b8482ff660d4612d0cd030e2f13144ea2dfc4f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 14:35:44 +0200 Subject: [PATCH 3/6] Add brand icons --- src/components/Icon/index.tsx | 24 +++++++- static/img/agama.png | Bin 0 -> 30745 bytes static/img/bitmovin.svg | 27 +++++++++ static/img/gemius.svg | 1 + static/img/google.svg | 104 ++++++++++++++++++++++++++++++++++ static/img/mux.png | Bin 0 -> 16552 bytes static/img/youbora.png | Bin 0 -> 40178 bytes 7 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 static/img/agama.png create mode 100644 static/img/bitmovin.svg create mode 100644 static/img/gemius.svg create mode 100644 static/img/google.svg create mode 100644 static/img/mux.png create mode 100644 static/img/youbora.png diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx index 409377c67a32..dc7d3599d1ad 100644 --- a/src/components/Icon/index.tsx +++ b/src/components/Icon/index.tsx @@ -1,15 +1,20 @@ import React, { JSX } from 'react'; import ThemedImage, { type Props as ThemedImageProps } from '@theme/ThemedImage'; import { useBaseUrlUtils } from '@docusaurus/useBaseUrl'; -import AmpIcon from '@site/static/img/amp.svg'; import AdobeIcon from '@site/static/img/adobe.svg'; +import AgamaIcon from '@site/static/img/agama.png'; +import AmpIcon from '@site/static/img/amp.svg'; import AndroidIcon from '@site/static/img/android.svg'; import AngularIcon from '@site/static/img/angular.svg'; import AppleIcon from '@site/static/img/apple.svg'; +import BitmovinIcon from '@site/static/img/bitmovin.svg'; import ComscoreIcon from '@site/static/img/comscore.svg'; import ChromecastIcon from '@site/static/img/chromecast.svg'; import FlutterIcon from '@site/static/img/flutter.svg'; +import GemiusIcon from '@site/static/img/gemius.svg'; +import GoogleIcon from '@site/static/img/google.svg'; import LinuxIcon from '@site/static/img/linux.svg'; +import MuxIcon from '@site/static/img/mux.png'; import NielsenIcon from '@site/static/img/nielsen.svg'; import NuxtjsIcon from '@site/static/img/nuxtjs.svg'; import ReactIcon from '@site/static/img/react.svg'; @@ -19,7 +24,8 @@ import VuejsIcon from '@site/static/img/vuejs.svg'; import WebIcon from '@site/static/img/web.svg'; import WindowsIcon from '@site/static/img/windows.svg'; import WordPressIcon from '@site/static/img/wordpress.svg'; -import YospaceIconUrl from '@site/static/img/yospace.png'; +import YospaceIcon from '@site/static/img/yospace.png'; +import YouboraIcon from '@site/static/img/youbora.png'; import clsx from 'clsx'; import styles from './styles.module.css'; @@ -53,6 +59,8 @@ export default function Icon({ icon, defaultIcon, className }: IconProps): JSX.E switch (icon) { case 'adobe': return ; + case 'agama': + return ; case 'amp': return ; case 'android': @@ -61,6 +69,8 @@ export default function Icon({ icon, defaultIcon, className }: IconProps): JSX.E return ; case 'apple': return ; + case 'bitmovin': + return ; case 'chromecast': return ; case 'comscore': @@ -77,6 +87,10 @@ export default function Icon({ icon, defaultIcon, className }: IconProps): JSX.E ); case 'flutter': return ; + case 'gemius': + return ; + case 'google': + return ; case 'github': return ( ; case 'nuxtjs': return ; + case 'mux': + return ; case 'react': return ; case 'roku': @@ -108,7 +124,9 @@ export default function Icon({ icon, defaultIcon, className }: IconProps): JSX.E case 'wordpress': return ; case 'yospace': - return ; + return ; + case 'youbora': + return ; default: return ; } diff --git a/static/img/agama.png b/static/img/agama.png new file mode 100644 index 0000000000000000000000000000000000000000..35228929d51d2f19100ec77a883888d929ab69d1 GIT binary patch literal 30745 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

+gs;&D~?AKZ<2nlMRyf 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 literal 0 HcmV?d00001 diff --git a/static/img/bitmovin.svg b/static/img/bitmovin.svg new file mode 100644 index 000000000000..68996a360cd4 --- /dev/null +++ b/static/img/bitmovin.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/gemius.svg b/static/img/gemius.svg new file mode 100644 index 000000000000..8d09aca3c255 --- /dev/null +++ b/static/img/gemius.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/google.svg b/static/img/google.svg new file mode 100644 index 000000000000..dde6f728f648 --- /dev/null +++ b/static/img/google.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/mux.png b/static/img/mux.png new file mode 100644 index 0000000000000000000000000000000000000000..4fcdf5697c571e7cad52d18719f7669336954072 GIT binary patch literal 16552 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 Uo~so76E-d{ts+$;VHWzo0F;Nsk^lez literal 0 HcmV?d00001 diff --git a/static/img/youbora.png b/static/img/youbora.png new file mode 100644 index 0000000000000000000000000000000000000000..b14e573e04870f2a0dff9e0b6f434d7e18c96043 GIT binary patch literal 40178 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 Date: Mon, 30 Mar 2026 14:39:45 +0200 Subject: [PATCH 4/6] Add rn connector sidebar --- sidebarsTheoplayer.ts | 347 ++++++++++++++++++- theoplayer/connectors/index.mdx | 6 + theoplayer/connectors/react-native/index.mdx | 11 + 3 files changed, 363 insertions(+), 1 deletion(-) create mode 100644 theoplayer/connectors/react-native/index.mdx diff --git a/sidebarsTheoplayer.ts b/sidebarsTheoplayer.ts index a98cace66ba6..15f74000cb17 100644 --- a/sidebarsTheoplayer.ts +++ b/sidebarsTheoplayer.ts @@ -170,6 +170,10 @@ const sidebars: SidebarsConfig = { }, ], }), + connectorsCategory({ + link: { type: 'doc', id: 'connectors/react-native/index' }, + items: reactNativeConnectorItems(), + }), 'external/react-native-theoplayer/CHANGELOG', apiReferencesLink({ href: 'https://theoplayer.github.io/react-native-theoplayer/api/', @@ -742,6 +746,347 @@ function androidConnectorItems(): SidebarItemConfig[] { ]; } +function reactNativeConnectorItems(): SidebarItemConfig[] { + return [ + { + type: 'category', + label: 'Adobe', + description: 'Integrate with Adobe analytics.', + customProps: { + icon: 'adobe', + }, + link: { + type: 'generated-index', + title: 'Adobe Connector for React Native', + slug: 'connectors/react-native/adobe', + }, + items: [ + 'external/react-native-connectors/adobe/README', + 'external/react-native-connectors/adobe/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Adobe connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/adobe', + }), + ], + }, + { + type: 'category', + label: 'Adobe Edge', + description: 'Integrate with Adobe Edge analytics.', + customProps: { + icon: 'adobe', + }, + link: { + type: 'generated-index', + title: 'Adobe Edge Connector for React Native', + slug: 'connectors/react-native/adobe-edge', + }, + items: [ + 'external/react-native-connectors/adobe-edge/README', + 'external/react-native-connectors/adobe-edge/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Adobe Edge connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Edge_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/adobe-edge', + }), + ], + }, + { + type: 'category', + label: 'Adscript', + description: 'Integrate with Adscript analytics.', + customProps: { + icon: 'nielsen', + }, + link: { + type: 'generated-index', + title: 'Adscript Connector for React Native', + slug: 'connectors/react-native/adscript', + }, + items: [ + 'external/react-native-connectors/adscript/README', + 'external/react-native-connectors/adscript/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Adscript connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/AdScript_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/adscript', + }), + ], + }, + { + type: 'category', + label: 'Agama', + description: 'Integrate with Agama analytics.', + customProps: { + icon: 'agama', + }, + link: { + type: 'generated-index', + title: 'Agama Connector for React Native', + slug: 'connectors/react-native/agama', + }, + items: [ + 'external/react-native-connectors/agama/README', + 'external/react-native-connectors/agama/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Agama connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Agama_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/agama', + }), + ], + }, + { + type: 'category', + label: 'Bitmovin', + description: 'Integrate with Bitmovin analytics.', + customProps: { + icon: 'bitmovin', + }, + link: { + type: 'generated-index', + title: 'Bitmovin Connector for React Native', + slug: 'connectors/react-native/bitmovin', + }, + items: [ + 'external/react-native-connectors/bitmovin/README', + 'external/react-native-connectors/bitmovin/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Bitmovin connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Bitmovin_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/bitmovin', + }), + ], + }, + { + type: 'category', + label: 'Comscore', + description: 'Integrate with Comscore analytics.', + customProps: { + icon: 'comscore', + }, + link: { + type: 'generated-index', + title: 'Comscore Connector for React Native', + slug: 'connectors/react-native/comscore', + }, + items: [ + 'external/react-native-connectors/comscore/README', + 'external/react-native-connectors/comscore/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Comscore connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Comscore_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/comscore', + }), + ], + }, + { + type: 'category', + label: 'Conviva', + description: 'Integrate with Conviva analytics.', + customProps: { + icon: 'conviva', + }, + link: { + type: 'generated-index', + title: 'Conviva Connector for React Native', + slug: 'connectors/react-native/conviva', + }, + items: [ + 'external/react-native-connectors/conviva/README', + 'external/react-native-connectors/conviva/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Conviva connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Conviva_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/conviva', + }), + ], + }, + { + type: 'category', + label: 'DRM', + description: 'Integrate with the DRM connector.', + customProps: { + icon: '🔒', + }, + link: { + type: 'generated-index', + title: 'DRM Connector for React Native', + slug: 'connectors/react-native/drm', + }, + items: [ + 'external/react-native-connectors/drm/README', + 'external/react-native-connectors/drm/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the DRM connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/DRM_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/drm', + }), + ], + }, + { + type: 'category', + label: 'Engage', + description: 'Integrate with the Engage connector.', + customProps: { + icon: 'google', + }, + link: { + type: 'generated-index', + title: 'Engage Connector for React Native', + slug: 'connectors/react-native/engage', + }, + items: [ + 'external/react-native-connectors/engage/README', + 'external/react-native-connectors/engage/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Engage connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Engage_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/engage', + }), + ], + }, + { + type: 'category', + label: 'Gemius', + description: 'Integrate with Gemius analytics.', + customProps: { + icon: 'gemius', + }, + link: { + type: 'generated-index', + title: 'Gemius Connector for React Native', + slug: 'connectors/react-native/gemius', + }, + items: [ + 'external/react-native-connectors/gemius/README', + 'external/react-native-connectors/gemius/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Gemius connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Gemius_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/gemius', + }), + ], + }, + { + type: 'category', + label: 'Mux', + description: 'Integrate with Mux analytics.', + customProps: { + icon: 'mux', + }, + link: { + type: 'generated-index', + title: 'Mux Connector for React Native', + slug: 'connectors/react-native/mux', + }, + items: [ + 'external/react-native-connectors/mux/README', + 'external/react-native-connectors/mux/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Mux connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Mux_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/mux', + }), + ], + }, + { + type: 'category', + label: 'Nielsen', + description: 'Integrate with Nielsen analytics.', + customProps: { + icon: 'nielsen', + }, + link: { + type: 'generated-index', + title: 'Nielsen Connector for React Native', + slug: 'connectors/react-native/nielsen', + }, + items: [ + 'external/react-native-connectors/nielsen/README', + 'external/react-native-connectors/nielsen/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Nielsen connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Nielsen_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen', + }), + ], + }, + { + type: 'category', + label: 'Yospace', + description: 'Integrate with Yospace analytics.', + customProps: { + icon: 'yospace', + }, + link: { + type: 'generated-index', + title: 'Yospace Connector for React Native', + slug: 'connectors/react-native/yospace', + }, + items: [ + 'external/react-native-connectors/yospace/README', + 'external/react-native-connectors/yospace/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Yospace connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Yospace_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/yospace', + }), + ], + }, + { + type: 'category', + label: 'Youbora', + description: 'Integrate with Youbora analytics.', + customProps: { + icon: 'youbora', + }, + link: { + type: 'generated-index', + title: 'Youbora Connector for React Native', + slug: 'connectors/react-native/youbora', + }, + items: [ + 'external/react-native-connectors/youbora/README', + 'external/react-native-connectors/youbora/CHANGELOG', + apiReferencesLink({ + description: 'Discover all functions provided by the Youbora connector for React Native.', + href: 'https://theoplayer.github.io/react-native-connectors/api/modules/Youbora_Connector.html', + }), + githubLink({ + href: 'https://github.com/THEOplayer/react-native-connectors/tree/main/youbora', + }), + ], + }, + ]; +} + function iosConnectorItems(): SidebarItemConfig[] { return [ { @@ -808,7 +1153,7 @@ function iosConnectorItems(): SidebarItemConfig[] { label: 'Yospace', description: 'Integrate with Yospace for server-side ad insertion (SSAI).', customProps: { - icon: '💬', + icon: 'yospace', }, link: { type: 'generated-index', diff --git a/theoplayer/connectors/index.mdx b/theoplayer/connectors/index.mdx index b29fff63b3de..6dcfe4206687 100644 --- a/theoplayer/connectors/index.mdx +++ b/theoplayer/connectors/index.mdx @@ -31,6 +31,12 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; customProps: { icon: 'apple' }, href: useBaseUrl(`theoplayer/connectors/ios`), }, + { + type: 'link', + label: 'Connectors for React Native SDK', + customProps: { icon: 'react-native' }, + href: useBaseUrl(`theoplayer/connectors/react-native`), + }, { type: 'link', label: 'Connectors for Roku', diff --git a/theoplayer/connectors/react-native/index.mdx b/theoplayer/connectors/react-native/index.mdx new file mode 100644 index 000000000000..31b96d4a99fe --- /dev/null +++ b/theoplayer/connectors/react-native/index.mdx @@ -0,0 +1,11 @@ +--- +sidebar_position: 0 +sidebar_label: Overview +pagination_label: React Native Connectors +--- + +# Connectors for THEOplayer React Native SDK + +import DocCardList from '@theme/DocCardList'; + + From d7c2f78320b8193944815bba94db57109e9a320f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 14:40:50 +0200 Subject: [PATCH 5/6] Add replace routes --- docusaurus.config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 05f9f764fca3..9166045f0905 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -36,6 +36,8 @@ const docsConfigBase = { 'external/android-connector/connectors/uplynk/docs/*.md', 'external/iOS-Connector/Code/**/README.md', 'external/iOS-Connector/Code/Uplynk/docs/*.md', + 'external/react-native-connectors/*/README.md', + 'external/react-native-connectors/*/CHANGELOG.md', 'external/flutter-theoplayer-sdk/flutter_theoplayer_sdk/{CHANGELOG,README}.md', 'external/flutter-theoplayer-sdk/flutter_theoplayer_sdk/flutter_theoplayer_sdk/{CHANGELOG,README}.md', 'external/*/{doc,docs}/**/*.{md,mdx}', @@ -463,6 +465,9 @@ const config: Config = { .replace('flutter-theoplayer-sdk/doc/', '/flutter/guides/') .replace('react-native-theoplayer-ui/CHANGELOG', '/react-native/changelog') .replace('react-native-theoplayer-ui/doc/', '/react-native/') + .replace(/react-native-connectors\/([^/]+)\/CHANGELOG/, '/connectors/react-native/$1/changelog') + .replace(/react-native-connectors\/([^/]+)\/README/, '/connectors/react-native/$1/getting-started') + .replace(/react-native-connectors\/([^/]+)\/doc\//, '/connectors/react-native/$1/') .replace(/web-connectors\/([^/]+)\/CHANGELOG/, '/connectors/web/$1/changelog') .replace(/web-connectors\/([^/]+)\/README/, '/connectors/web/$1/getting-started') .replace(/web-connectors\/([^/]+)\/doc\//, '/connectors/web/$1/') From 56fc3f4ab081a0a93215ef2c5284df0f441a92bd Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 14:44:31 +0200 Subject: [PATCH 6/6] Add versioned docs sidebars --- .../version-v7/connectors/index.mdx | 6 + .../connectors/react-native/index.mdx | 11 + .../version-v8/connectors/index.mdx | 6 + .../connectors/react-native/index.mdx | 11 + .../version-v9/connectors/index.mdx | 6 + .../connectors/react-native/index.mdx | 11 + .../version-v7-sidebars.json | 504 ++++++++++++++++++ .../version-v8-sidebars.json | 504 ++++++++++++++++++ .../version-v9-sidebars.json | 504 ++++++++++++++++++ 9 files changed, 1563 insertions(+) create mode 100644 theoplayer_versioned_docs/version-v7/connectors/react-native/index.mdx create mode 100644 theoplayer_versioned_docs/version-v8/connectors/react-native/index.mdx create mode 100644 theoplayer_versioned_docs/version-v9/connectors/react-native/index.mdx diff --git a/theoplayer_versioned_docs/version-v7/connectors/index.mdx b/theoplayer_versioned_docs/version-v7/connectors/index.mdx index 52a1d47ad331..e8604bc2aa3e 100644 --- a/theoplayer_versioned_docs/version-v7/connectors/index.mdx +++ b/theoplayer_versioned_docs/version-v7/connectors/index.mdx @@ -31,5 +31,11 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; customProps: { icon: 'apple' }, href: useBaseUrl(`theoplayer/connectors/ios`), }, + { + type: 'link', + label: 'Connectors for React Native SDK', + customProps: { icon: 'react-native' }, + href: useBaseUrl(`theoplayer/connectors/react-native`), + }, ]} /> diff --git a/theoplayer_versioned_docs/version-v7/connectors/react-native/index.mdx b/theoplayer_versioned_docs/version-v7/connectors/react-native/index.mdx new file mode 100644 index 000000000000..31b96d4a99fe --- /dev/null +++ b/theoplayer_versioned_docs/version-v7/connectors/react-native/index.mdx @@ -0,0 +1,11 @@ +--- +sidebar_position: 0 +sidebar_label: Overview +pagination_label: React Native Connectors +--- + +# Connectors for THEOplayer React Native SDK + +import DocCardList from '@theme/DocCardList'; + + diff --git a/theoplayer_versioned_docs/version-v8/connectors/index.mdx b/theoplayer_versioned_docs/version-v8/connectors/index.mdx index b29fff63b3de..6dcfe4206687 100644 --- a/theoplayer_versioned_docs/version-v8/connectors/index.mdx +++ b/theoplayer_versioned_docs/version-v8/connectors/index.mdx @@ -31,6 +31,12 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; customProps: { icon: 'apple' }, href: useBaseUrl(`theoplayer/connectors/ios`), }, + { + type: 'link', + label: 'Connectors for React Native SDK', + customProps: { icon: 'react-native' }, + href: useBaseUrl(`theoplayer/connectors/react-native`), + }, { type: 'link', label: 'Connectors for Roku', diff --git a/theoplayer_versioned_docs/version-v8/connectors/react-native/index.mdx b/theoplayer_versioned_docs/version-v8/connectors/react-native/index.mdx new file mode 100644 index 000000000000..31b96d4a99fe --- /dev/null +++ b/theoplayer_versioned_docs/version-v8/connectors/react-native/index.mdx @@ -0,0 +1,11 @@ +--- +sidebar_position: 0 +sidebar_label: Overview +pagination_label: React Native Connectors +--- + +# Connectors for THEOplayer React Native SDK + +import DocCardList from '@theme/DocCardList'; + + diff --git a/theoplayer_versioned_docs/version-v9/connectors/index.mdx b/theoplayer_versioned_docs/version-v9/connectors/index.mdx index b29fff63b3de..6dcfe4206687 100644 --- a/theoplayer_versioned_docs/version-v9/connectors/index.mdx +++ b/theoplayer_versioned_docs/version-v9/connectors/index.mdx @@ -31,6 +31,12 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; customProps: { icon: 'apple' }, href: useBaseUrl(`theoplayer/connectors/ios`), }, + { + type: 'link', + label: 'Connectors for React Native SDK', + customProps: { icon: 'react-native' }, + href: useBaseUrl(`theoplayer/connectors/react-native`), + }, { type: 'link', label: 'Connectors for Roku', diff --git a/theoplayer_versioned_docs/version-v9/connectors/react-native/index.mdx b/theoplayer_versioned_docs/version-v9/connectors/react-native/index.mdx new file mode 100644 index 000000000000..31b96d4a99fe --- /dev/null +++ b/theoplayer_versioned_docs/version-v9/connectors/react-native/index.mdx @@ -0,0 +1,11 @@ +--- +sidebar_position: 0 +sidebar_label: Overview +pagination_label: React Native Connectors +--- + +# Connectors for THEOplayer React Native SDK + +import DocCardList from '@theme/DocCardList'; + + diff --git a/theoplayer_versioned_sidebars/version-v7-sidebars.json b/theoplayer_versioned_sidebars/version-v7-sidebars.json index 46d44dd0c2c4..4788a1ba9e68 100644 --- a/theoplayer_versioned_sidebars/version-v7-sidebars.json +++ b/theoplayer_versioned_sidebars/version-v7-sidebars.json @@ -874,6 +874,510 @@ } ] }, + { + "type": "category", + "label": "Connectors", + "description": "Integrate third-party solutions with THEOplayer using our pre-built connectors.", + "customProps": { + "icon": "🔌" + }, + "link": { + "type": "doc", + "id": "connectors/react-native/index" + }, + "items": [ + { + "type": "category", + "label": "Adobe", + "description": "Integrate with Adobe analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Connector for React Native", + "slug": "connectors/react-native/adobe" + }, + "items": [ + "external/react-native-connectors/adobe/README", + "external/react-native-connectors/adobe/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe" + } + ] + }, + { + "type": "category", + "label": "Adobe Edge", + "description": "Integrate with Adobe Edge analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Edge Connector for React Native", + "slug": "connectors/react-native/adobe-edge" + }, + "items": [ + "external/react-native-connectors/adobe-edge/README", + "external/react-native-connectors/adobe-edge/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe Edge connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Edge_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe-edge" + } + ] + }, + { + "type": "category", + "label": "Adscript", + "description": "Integrate with Adscript analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Adscript Connector for React Native", + "slug": "connectors/react-native/adscript" + }, + "items": [ + "external/react-native-connectors/adscript/README", + "external/react-native-connectors/adscript/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adscript connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adscript_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adscript" + } + ] + }, + { + "type": "category", + "label": "Agama", + "description": "Integrate with Agama analytics.", + "customProps": { + "icon": "agama" + }, + "link": { + "type": "generated-index", + "title": "Agama Connector for React Native", + "slug": "connectors/react-native/agama" + }, + "items": [ + "external/react-native-connectors/agama/README", + "external/react-native-connectors/agama/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Agama connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Agama_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/agama" + } + ] + }, + { + "type": "category", + "label": "Bitmovin", + "description": "Integrate with Bitmovin analytics.", + "customProps": { + "icon": "bitmovin" + }, + "link": { + "type": "generated-index", + "title": "Bitmovin Connector for React Native", + "slug": "connectors/react-native/bitmovin" + }, + "items": [ + "external/react-native-connectors/bitmovin/README", + "external/react-native-connectors/bitmovin/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Bitmovin connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Bitmovin_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/bitmovin" + } + ] + }, + { + "type": "category", + "label": "Comscore", + "description": "Integrate with Comscore analytics.", + "customProps": { + "icon": "comscore" + }, + "link": { + "type": "generated-index", + "title": "Comscore Connector for React Native", + "slug": "connectors/react-native/comscore" + }, + "items": [ + "external/react-native-connectors/comscore/README", + "external/react-native-connectors/comscore/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Comscore connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Comscore_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/comscore" + } + ] + }, + { + "type": "category", + "label": "Conviva", + "description": "Integrate with Conviva analytics.", + "customProps": { + "icon": "conviva" + }, + "link": { + "type": "generated-index", + "title": "Conviva Connector for React Native", + "slug": "connectors/react-native/conviva" + }, + "items": [ + "external/react-native-connectors/conviva/README", + "external/react-native-connectors/conviva/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Conviva connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Conviva_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/conviva" + } + ] + }, + { + "type": "category", + "label": "DRM", + "description": "Integrate with the DRM connector.", + "customProps": { + "icon": "🔒" + }, + "link": { + "type": "generated-index", + "title": "DRM Connector for React Native", + "slug": "connectors/react-native/drm" + }, + "items": [ + "external/react-native-connectors/drm/README", + "external/react-native-connectors/drm/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the DRM connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/DRM_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/drm" + } + ] + }, + { + "type": "category", + "label": "Engage", + "description": "Integrate with the Engage connector.", + "customProps": { + "icon": "google" + }, + "link": { + "type": "generated-index", + "title": "Engage Connector for React Native", + "slug": "connectors/react-native/engage" + }, + "items": [ + "external/react-native-connectors/engage/README", + "external/react-native-connectors/engage/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Engage connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Engage_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/engage" + } + ] + }, + { + "type": "category", + "label": "Gemius", + "description": "Integrate with Gemius analytics.", + "customProps": { + "icon": "gemius" + }, + "link": { + "type": "generated-index", + "title": "Gemius Connector for React Native", + "slug": "connectors/react-native/gemius" + }, + "items": [ + "external/react-native-connectors/gemius/README", + "external/react-native-connectors/gemius/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Gemius connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Gemius_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/gemius" + } + ] + }, + { + "type": "category", + "label": "Mux", + "description": "Integrate with Mux analytics.", + "customProps": { + "icon": "mux" + }, + "link": { + "type": "generated-index", + "title": "Mux Connector for React Native", + "slug": "connectors/react-native/mux" + }, + "items": [ + "external/react-native-connectors/mux/README", + "external/react-native-connectors/mux/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Mux connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Mux_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/mux" + } + ] + }, + { + "type": "category", + "label": "Nielsen", + "description": "Integrate with Nielsen analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Nielsen Connector for React Native", + "slug": "connectors/react-native/nielsen" + }, + "items": [ + "external/react-native-connectors/nielsen/README", + "external/react-native-connectors/nielsen/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Nielsen connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Nielsen_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen" + } + ] + }, + { + "type": "category", + "label": "Yospace", + "description": "Integrate with Yospace analytics.", + "customProps": { + "icon": "yospace" + }, + "link": { + "type": "generated-index", + "title": "Yospace Connector for React Native", + "slug": "connectors/react-native/yospace" + }, + "items": [ + "external/react-native-connectors/yospace/README", + "external/react-native-connectors/yospace/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Yospace connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Yospace_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/yospace" + } + ] + }, + { + "type": "category", + "label": "Youbora", + "description": "Integrate with Youbora analytics.", + "customProps": { + "icon": "youbora" + }, + "link": { + "type": "generated-index", + "title": "Youbora Connector for React Native", + "slug": "connectors/react-native/youbora" + }, + "items": [ + "external/react-native-connectors/youbora/README", + "external/react-native-connectors/youbora/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Youbora connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Youbora_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/youbora" + } + ] + } + ] + }, "external/react-native-theoplayer/CHANGELOG", { "type": "link", diff --git a/theoplayer_versioned_sidebars/version-v8-sidebars.json b/theoplayer_versioned_sidebars/version-v8-sidebars.json index 67c623d62187..232570888b17 100644 --- a/theoplayer_versioned_sidebars/version-v8-sidebars.json +++ b/theoplayer_versioned_sidebars/version-v8-sidebars.json @@ -996,6 +996,510 @@ } ] }, + { + "type": "category", + "label": "Connectors", + "description": "Integrate third-party solutions with THEOplayer using our pre-built connectors.", + "customProps": { + "icon": "🔌" + }, + "link": { + "type": "doc", + "id": "connectors/react-native/index" + }, + "items": [ + { + "type": "category", + "label": "Adobe", + "description": "Integrate with Adobe analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Connector for React Native", + "slug": "connectors/react-native/adobe" + }, + "items": [ + "external/react-native-connectors/adobe/README", + "external/react-native-connectors/adobe/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe" + } + ] + }, + { + "type": "category", + "label": "Adobe Edge", + "description": "Integrate with Adobe Edge analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Edge Connector for React Native", + "slug": "connectors/react-native/adobe-edge" + }, + "items": [ + "external/react-native-connectors/adobe-edge/README", + "external/react-native-connectors/adobe-edge/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe Edge connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Edge_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe-edge" + } + ] + }, + { + "type": "category", + "label": "Adscript", + "description": "Integrate with Adscript analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Adscript Connector for React Native", + "slug": "connectors/react-native/adscript" + }, + "items": [ + "external/react-native-connectors/adscript/README", + "external/react-native-connectors/adscript/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adscript connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adscript_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adscript" + } + ] + }, + { + "type": "category", + "label": "Agama", + "description": "Integrate with Agama analytics.", + "customProps": { + "icon": "agama" + }, + "link": { + "type": "generated-index", + "title": "Agama Connector for React Native", + "slug": "connectors/react-native/agama" + }, + "items": [ + "external/react-native-connectors/agama/README", + "external/react-native-connectors/agama/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Agama connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Agama_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/agama" + } + ] + }, + { + "type": "category", + "label": "Bitmovin", + "description": "Integrate with Bitmovin analytics.", + "customProps": { + "icon": "bitmovin" + }, + "link": { + "type": "generated-index", + "title": "Bitmovin Connector for React Native", + "slug": "connectors/react-native/bitmovin" + }, + "items": [ + "external/react-native-connectors/bitmovin/README", + "external/react-native-connectors/bitmovin/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Bitmovin connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Bitmovin_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/bitmovin" + } + ] + }, + { + "type": "category", + "label": "Comscore", + "description": "Integrate with Comscore analytics.", + "customProps": { + "icon": "comscore" + }, + "link": { + "type": "generated-index", + "title": "Comscore Connector for React Native", + "slug": "connectors/react-native/comscore" + }, + "items": [ + "external/react-native-connectors/comscore/README", + "external/react-native-connectors/comscore/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Comscore connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Comscore_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/comscore" + } + ] + }, + { + "type": "category", + "label": "Conviva", + "description": "Integrate with Conviva analytics.", + "customProps": { + "icon": "conviva" + }, + "link": { + "type": "generated-index", + "title": "Conviva Connector for React Native", + "slug": "connectors/react-native/conviva" + }, + "items": [ + "external/react-native-connectors/conviva/README", + "external/react-native-connectors/conviva/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Conviva connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Conviva_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/conviva" + } + ] + }, + { + "type": "category", + "label": "DRM", + "description": "Integrate with the DRM connector.", + "customProps": { + "icon": "🔒" + }, + "link": { + "type": "generated-index", + "title": "DRM Connector for React Native", + "slug": "connectors/react-native/drm" + }, + "items": [ + "external/react-native-connectors/drm/README", + "external/react-native-connectors/drm/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the DRM connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/DRM_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/drm" + } + ] + }, + { + "type": "category", + "label": "Engage", + "description": "Integrate with the Engage connector.", + "customProps": { + "icon": "google" + }, + "link": { + "type": "generated-index", + "title": "Engage Connector for React Native", + "slug": "connectors/react-native/engage" + }, + "items": [ + "external/react-native-connectors/engage/README", + "external/react-native-connectors/engage/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Engage connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Engage_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/engage" + } + ] + }, + { + "type": "category", + "label": "Gemius", + "description": "Integrate with Gemius analytics.", + "customProps": { + "icon": "gemius" + }, + "link": { + "type": "generated-index", + "title": "Gemius Connector for React Native", + "slug": "connectors/react-native/gemius" + }, + "items": [ + "external/react-native-connectors/gemius/README", + "external/react-native-connectors/gemius/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Gemius connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Gemius_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/gemius" + } + ] + }, + { + "type": "category", + "label": "Mux", + "description": "Integrate with Mux analytics.", + "customProps": { + "icon": "mux" + }, + "link": { + "type": "generated-index", + "title": "Mux Connector for React Native", + "slug": "connectors/react-native/mux" + }, + "items": [ + "external/react-native-connectors/mux/README", + "external/react-native-connectors/mux/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Mux connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Mux_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/mux" + } + ] + }, + { + "type": "category", + "label": "Nielsen", + "description": "Integrate with Nielsen analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Nielsen Connector for React Native", + "slug": "connectors/react-native/nielsen" + }, + "items": [ + "external/react-native-connectors/nielsen/README", + "external/react-native-connectors/nielsen/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Nielsen connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Nielsen_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen" + } + ] + }, + { + "type": "category", + "label": "Yospace", + "description": "Integrate with Yospace analytics.", + "customProps": { + "icon": "yospace" + }, + "link": { + "type": "generated-index", + "title": "Yospace Connector for React Native", + "slug": "connectors/react-native/yospace" + }, + "items": [ + "external/react-native-connectors/yospace/README", + "external/react-native-connectors/yospace/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Yospace connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Yospace_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/yospace" + } + ] + }, + { + "type": "category", + "label": "Youbora", + "description": "Integrate with Youbora analytics.", + "customProps": { + "icon": "youbora" + }, + "link": { + "type": "generated-index", + "title": "Youbora Connector for React Native", + "slug": "connectors/react-native/youbora" + }, + "items": [ + "external/react-native-connectors/youbora/README", + "external/react-native-connectors/youbora/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Youbora connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Youbora_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/youbora" + } + ] + } + ] + }, "external/react-native-theoplayer/CHANGELOG", { "type": "link", diff --git a/theoplayer_versioned_sidebars/version-v9-sidebars.json b/theoplayer_versioned_sidebars/version-v9-sidebars.json index eb2080aac2ae..a76997bba8c3 100644 --- a/theoplayer_versioned_sidebars/version-v9-sidebars.json +++ b/theoplayer_versioned_sidebars/version-v9-sidebars.json @@ -1024,6 +1024,510 @@ } ] }, + { + "type": "category", + "label": "Connectors", + "description": "Integrate third-party solutions with THEOplayer using our pre-built connectors.", + "customProps": { + "icon": "🔌" + }, + "link": { + "type": "doc", + "id": "connectors/react-native/index" + }, + "items": [ + { + "type": "category", + "label": "Adobe", + "description": "Integrate with Adobe analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Connector for React Native", + "slug": "connectors/react-native/adobe" + }, + "items": [ + "external/react-native-connectors/adobe/README", + "external/react-native-connectors/adobe/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe" + } + ] + }, + { + "type": "category", + "label": "Adobe Edge", + "description": "Integrate with Adobe Edge analytics.", + "customProps": { + "icon": "adobe" + }, + "link": { + "type": "generated-index", + "title": "Adobe Edge Connector for React Native", + "slug": "connectors/react-native/adobe-edge" + }, + "items": [ + "external/react-native-connectors/adobe-edge/README", + "external/react-native-connectors/adobe-edge/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adobe Edge connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adobe_Edge_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adobe-edge" + } + ] + }, + { + "type": "category", + "label": "Adscript", + "description": "Integrate with Adscript analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Adscript Connector for React Native", + "slug": "connectors/react-native/adscript" + }, + "items": [ + "external/react-native-connectors/adscript/README", + "external/react-native-connectors/adscript/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Adscript connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Adscript_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/adscript" + } + ] + }, + { + "type": "category", + "label": "Agama", + "description": "Integrate with Agama analytics.", + "customProps": { + "icon": "agama" + }, + "link": { + "type": "generated-index", + "title": "Agama Connector for React Native", + "slug": "connectors/react-native/agama" + }, + "items": [ + "external/react-native-connectors/agama/README", + "external/react-native-connectors/agama/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Agama connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Agama_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/agama" + } + ] + }, + { + "type": "category", + "label": "Bitmovin", + "description": "Integrate with Bitmovin analytics.", + "customProps": { + "icon": "bitmovin" + }, + "link": { + "type": "generated-index", + "title": "Bitmovin Connector for React Native", + "slug": "connectors/react-native/bitmovin" + }, + "items": [ + "external/react-native-connectors/bitmovin/README", + "external/react-native-connectors/bitmovin/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Bitmovin connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Bitmovin_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/bitmovin" + } + ] + }, + { + "type": "category", + "label": "Comscore", + "description": "Integrate with Comscore analytics.", + "customProps": { + "icon": "comscore" + }, + "link": { + "type": "generated-index", + "title": "Comscore Connector for React Native", + "slug": "connectors/react-native/comscore" + }, + "items": [ + "external/react-native-connectors/comscore/README", + "external/react-native-connectors/comscore/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Comscore connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Comscore_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/comscore" + } + ] + }, + { + "type": "category", + "label": "Conviva", + "description": "Integrate with Conviva analytics.", + "customProps": { + "icon": "conviva" + }, + "link": { + "type": "generated-index", + "title": "Conviva Connector for React Native", + "slug": "connectors/react-native/conviva" + }, + "items": [ + "external/react-native-connectors/conviva/README", + "external/react-native-connectors/conviva/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Conviva connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Conviva_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/conviva" + } + ] + }, + { + "type": "category", + "label": "DRM", + "description": "Integrate with the DRM connector.", + "customProps": { + "icon": "🔒" + }, + "link": { + "type": "generated-index", + "title": "DRM Connector for React Native", + "slug": "connectors/react-native/drm" + }, + "items": [ + "external/react-native-connectors/drm/README", + "external/react-native-connectors/drm/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the DRM connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/DRM_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/drm" + } + ] + }, + { + "type": "category", + "label": "Engage", + "description": "Integrate with the Engage connector.", + "customProps": { + "icon": "google" + }, + "link": { + "type": "generated-index", + "title": "Engage Connector for React Native", + "slug": "connectors/react-native/engage" + }, + "items": [ + "external/react-native-connectors/engage/README", + "external/react-native-connectors/engage/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Engage connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Engage_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/engage" + } + ] + }, + { + "type": "category", + "label": "Gemius", + "description": "Integrate with Gemius analytics.", + "customProps": { + "icon": "gemius" + }, + "link": { + "type": "generated-index", + "title": "Gemius Connector for React Native", + "slug": "connectors/react-native/gemius" + }, + "items": [ + "external/react-native-connectors/gemius/README", + "external/react-native-connectors/gemius/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Gemius connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Gemius_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/gemius" + } + ] + }, + { + "type": "category", + "label": "Mux", + "description": "Integrate with Mux analytics.", + "customProps": { + "icon": "mux" + }, + "link": { + "type": "generated-index", + "title": "Mux Connector for React Native", + "slug": "connectors/react-native/mux" + }, + "items": [ + "external/react-native-connectors/mux/README", + "external/react-native-connectors/mux/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Mux connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Mux_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/mux" + } + ] + }, + { + "type": "category", + "label": "Nielsen", + "description": "Integrate with Nielsen analytics.", + "customProps": { + "icon": "nielsen" + }, + "link": { + "type": "generated-index", + "title": "Nielsen Connector for React Native", + "slug": "connectors/react-native/nielsen" + }, + "items": [ + "external/react-native-connectors/nielsen/README", + "external/react-native-connectors/nielsen/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Nielsen connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Nielsen_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/nielsen" + } + ] + }, + { + "type": "category", + "label": "Yospace", + "description": "Integrate with Yospace analytics.", + "customProps": { + "icon": "yospace" + }, + "link": { + "type": "generated-index", + "title": "Yospace Connector for React Native", + "slug": "connectors/react-native/yospace" + }, + "items": [ + "external/react-native-connectors/yospace/README", + "external/react-native-connectors/yospace/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Yospace connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Yospace_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/yospace" + } + ] + }, + { + "type": "category", + "label": "Youbora", + "description": "Integrate with Youbora analytics.", + "customProps": { + "icon": "youbora" + }, + "link": { + "type": "generated-index", + "title": "Youbora Connector for React Native", + "slug": "connectors/react-native/youbora" + }, + "items": [ + "external/react-native-connectors/youbora/README", + "external/react-native-connectors/youbora/CHANGELOG", + { + "type": "link", + "label": "API references", + "description": "Discover all functions provided by the Youbora connector for React Native.", + "customProps": { + "icon": "*️⃣" + }, + "href": "https://theoplayer.github.io/react-native-connectors/api/modules/Youbora_Connector.html" + }, + { + "type": "link", + "label": "GitHub", + "description": "Browse the source code or report issues on GitHub.", + "customProps": { + "icon": "github" + }, + "href": "https://github.com/THEOplayer/react-native-connectors/tree/main/youbora" + } + ] + } + ] + }, "external/react-native-theoplayer/CHANGELOG", { "type": "link",