@capgo/capacitor-jw-player 0.0.37 → 7.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapgoCapacitorJwPlayer.podspec +1 -1
- package/Package.swift +2 -2
- package/README.md +2 -2
- package/android/build.gradle +1 -1
- package/android/src/main/java/ee/forgr/capacitor_jw_player/PlayerActivity.java +10 -9
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/JwPlayerPlugin/LinkedList.swift +2 -2
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.author = package['author']
|
|
12
12
|
s.source = { :git => package['repository']['url'], :tag => s.version.to_s }
|
|
13
13
|
s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}'
|
|
14
|
-
s.ios.deployment_target = '
|
|
14
|
+
s.ios.deployment_target = '15.0'
|
|
15
15
|
s.dependency 'Capacitor'
|
|
16
16
|
s.dependency 'JWPlayerKit', '>= 4.22.0'
|
|
17
17
|
s.dependency 'google-cast-sdk', '>= 4.8.1'
|
package/Package.swift
CHANGED
|
@@ -8,14 +8,14 @@ struct GoogleCastMetadata {
|
|
|
8
8
|
|
|
9
9
|
let package = Package(
|
|
10
10
|
name: "CapgoCapacitorJwPlayer",
|
|
11
|
-
platforms: [.iOS(.
|
|
11
|
+
platforms: [.iOS(.v15)],
|
|
12
12
|
products: [
|
|
13
13
|
.library(
|
|
14
14
|
name: "CapgoCapacitorJwPlayer",
|
|
15
15
|
targets: ["JwPlayerPlugin"])
|
|
16
16
|
],
|
|
17
17
|
dependencies: [
|
|
18
|
-
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", exact: "7.2
|
|
18
|
+
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", exact: "7.4.2"),
|
|
19
19
|
.package(url: "https://github.com/jwplayer/JWPlayerKit-package.git", .upToNextMajor(from: "4.22.0"))
|
|
20
20
|
],
|
|
21
21
|
targets: [
|
package/README.md
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
<h2><a href="https://capgo.app/consulting/?ref=plugin"> Missing a feature? We’ll build the plugin for you 💪</a></h2>
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
|
-
WIP: do not use it yet it's in dev
|
|
10
|
-
|
|
11
9
|
Play videos from jwplayer.com with a fullscreen player interface. The plugin provides a comprehensive API for controlling JW Player playback, playlists, and tracks.
|
|
12
10
|
|
|
11
|
+
The latest version of the player require a min version of IOS 15
|
|
12
|
+
|
|
13
13
|
## Key Features
|
|
14
14
|
|
|
15
15
|
- Always fullscreen player
|
package/android/build.gradle
CHANGED
|
@@ -76,7 +76,7 @@ dependencies {
|
|
|
76
76
|
implementation 'com.android.volley:volley:1.2.1'
|
|
77
77
|
implementation 'androidx.recyclerview:recyclerview:1.3.0'
|
|
78
78
|
implementation 'androidx.mediarouter:mediarouter:1.7.0'
|
|
79
|
-
implementation 'androidx.media:media:1.7.
|
|
79
|
+
implementation 'androidx.media:media:1.7.1'
|
|
80
80
|
|
|
81
81
|
testImplementation "junit:junit:$junitVersion"
|
|
82
82
|
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
@@ -107,13 +107,13 @@ public class PlayerActivity
|
|
|
107
107
|
|
|
108
108
|
// Setup Close Button
|
|
109
109
|
mCloseButton = findViewById(R.id.close_button);
|
|
110
|
-
mCloseButton.setOnClickListener(v -> finish());
|
|
110
|
+
mCloseButton.setOnClickListener((v) -> finish());
|
|
111
111
|
|
|
112
112
|
ControlbarViewModel controlbarViewModel = (ControlbarViewModel) mPlayer.getViewModelForUiGroup(UiGroup.CONTROLBAR);
|
|
113
113
|
|
|
114
114
|
controlbarViewModel
|
|
115
115
|
.isUiLayerVisible()
|
|
116
|
-
.observe(this, isVisible -> {
|
|
116
|
+
.observe(this, (isVisible) -> {
|
|
117
117
|
if (isInPictureInPictureMode()) {
|
|
118
118
|
mCloseButton.setVisibility(View.GONE);
|
|
119
119
|
return;
|
|
@@ -124,7 +124,7 @@ public class PlayerActivity
|
|
|
124
124
|
// Set the static instance reference in the plugin
|
|
125
125
|
JwPlayerPlugin.setStaticPlayerInstance(mPlayer);
|
|
126
126
|
|
|
127
|
-
mPlayerView.setOnClickListener(v -> toggleSystemUI());
|
|
127
|
+
mPlayerView.setOnClickListener((v) -> toggleSystemUI());
|
|
128
128
|
|
|
129
129
|
// Initialize JW Player license (ensure this is also done in Plugin if needed)
|
|
130
130
|
// new LicenseUtil().setLicenseKey(this, "YOUR_LICENSE_KEY"); // Ideally get from Intent or Plugin
|
|
@@ -201,7 +201,8 @@ public class PlayerActivity
|
|
|
201
201
|
protected void onPause() {
|
|
202
202
|
super.onPause();
|
|
203
203
|
Log.d(TAG, "onPause");
|
|
204
|
-
if (mPlayer != null && !isInPictureInPictureMode()) {
|
|
204
|
+
if (mPlayer != null && !isInPictureInPictureMode()) {
|
|
205
|
+
// Don't pause if entering PiP
|
|
205
206
|
// mPlayer.pause();
|
|
206
207
|
}
|
|
207
208
|
}
|
|
@@ -420,11 +421,11 @@ public class PlayerActivity
|
|
|
420
421
|
View decorView = getWindow().getDecorView();
|
|
421
422
|
decorView.setSystemUiVisibility(
|
|
422
423
|
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
424
|
+
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
|
|
425
|
+
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
|
|
426
|
+
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
|
|
427
|
+
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
|
|
428
|
+
View.SYSTEM_UI_FLAG_FULLSCREEN
|
|
428
429
|
);
|
|
429
430
|
}
|
|
430
431
|
}
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst JwPlayer = registerPlugin('JwPlayer', {\n web: () => import('./web').then((m) => new m.JwPlayerWeb()),\n});\nexport * from './definitions';\nexport { JwPlayer };\n//# sourceMappingURL=index.js.map","/// <reference types=\"jwplayer\" />\nimport { WebPlugin } from '@capacitor/core';\nexport class JwPlayerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n // Track if our overlay is currently displayed\n this.overlayDiv = null;\n // Store JW Player instance\n this.jwPlayerInstance = null;\n }\n // Generate a UUID that works in all browsers\n generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n async initialize(options) {\n console.log('INITIALIZE', options);\n if (!options.playerUrl) {\n throw new Error('playerUrl is required for web implementation');\n }\n const playerUrl = options.playerUrl;\n await new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = playerUrl;\n script.onload = () => resolve(null);\n script.onerror = () => reject(new Error('Failed to load JW Player script'));\n document.head.appendChild(script);\n });\n // Check if jwplayer() is available globally\n if (typeof window.jwplayer !== 'function') {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n }\n async play(options) {\n if (!window.jwplayer) {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n // Create fullscreen overlay div\n if (this.overlayDiv) {\n // Remove existing overlay if it exists\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // Create new overlay div (this will be our red background container)\n this.overlayDiv = document.createElement('div');\n // Style the outer overlay to take up 100% of screen\n Object.assign(this.overlayDiv.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n display: 'flex',\n });\n // Create the inner div for the player\n const playerDiv = document.createElement('div');\n const uniqueId = this.generateUUID();\n const id = `jw-player-${uniqueId}`;\n playerDiv.id = id;\n // Style the inner player div\n Object.assign(playerDiv.style, {\n width: '100%',\n height: '100%',\n margin: '0 auto',\n });\n // Create close (X) button\n const closeButton = document.createElement('button');\n closeButton.textContent = 'X';\n Object.assign(closeButton.style, {\n position: 'absolute',\n top: '10px',\n left: '10px',\n background: 'rgba(0, 0, 0, 0.5)',\n color: 'white',\n border: 'none',\n borderRadius: '50%',\n width: '30px',\n height: '30px',\n fontSize: '16px',\n fontWeight: 'bold',\n cursor: 'pointer',\n zIndex: '10000',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0',\n });\n // Add click handler to close button\n closeButton.addEventListener('click', () => {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n }\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n this.notifyListeners('playerDismissed', {});\n }\n });\n // Append inner div to the red overlay\n this.overlayDiv.appendChild(playerDiv);\n // Append close button to overlay\n this.overlayDiv.appendChild(closeButton);\n // Append outer div to body\n document.body.appendChild(this.overlayDiv);\n // Setup player on the inner div\n this.jwPlayerInstance = jwplayer(id).setup({\n playlist: options.mediaType === 'playlist' ? options.mediaUrl : [{ file: options.mediaUrl, title: 'Video' }],\n width: '100%',\n height: '100%',\n autostart: options.autostart || false,\n controls: true,\n displaytitle: false,\n });\n // Add unified event handlers to match iOS and Android\n this.setupEventHandlers();\n return;\n }\n // Setup unified event handlers to match iOS and Android\n setupEventHandlers() {\n if (!this.jwPlayerInstance)\n return;\n // Ready event\n this.jwPlayerInstance.on('ready', () => {\n this.notifyListeners('ready', {});\n });\n // Error event\n this.jwPlayerInstance.on('error', (error) => {\n this.notifyListeners('error', {\n message: (error === null || error === void 0 ? void 0 : error.message) || 'Unknown error',\n code: (error === null || error === void 0 ? void 0 : error.code) || -1,\n });\n });\n // Play event\n this.jwPlayerInstance.on('play', () => {\n this.notifyListeners('play', { reason: 'external' });\n });\n // Pause event\n this.jwPlayerInstance.on('pause', () => {\n this.notifyListeners('pause', { reason: 'external' });\n });\n // Complete event\n this.jwPlayerInstance.on('complete', () => {\n this.notifyListeners('complete', {});\n });\n // Seek event\n this.jwPlayerInstance.on('seek', (event) => {\n this.notifyListeners('seek', {\n position: event.position,\n offset: event.offset,\n });\n });\n // Time event (throttled to not fire too often)\n let lastTimeUpdate = 0;\n this.jwPlayerInstance.on('time', (event) => {\n const now = Date.now();\n // Throttle to once per second max\n if (now - lastTimeUpdate > 1000) {\n this.notifyListeners('time', {\n position: event.position,\n duration: event.duration,\n });\n lastTimeUpdate = now;\n }\n });\n // Playlist item event\n this.jwPlayerInstance.on('playlistItem', (event) => {\n var _a;\n this.notifyListeners('playlistItem', {\n index: event.index,\n title: ((_a = event.item) === null || _a === void 0 ? void 0 : _a.title) || '',\n });\n });\n // Playlist complete event\n this.jwPlayerInstance.on('playlistComplete', () => {\n this.notifyListeners('playlistComplete', {});\n });\n // Controls visibility event\n this.jwPlayerInstance.on('controls', (event) => {\n this.notifyListeners('controlsChanged', {\n visible: event.controls,\n });\n });\n }\n async pause() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.pause();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n async stop() {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // The complete event will be triggered by the JW Player event handler,\n // but since we're removing the player instance, we need to send it manually here\n this.notifyListeners('playerDismissed', {});\n return;\n }\n throw new Error('Player not active');\n }\n async seekTo(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.seek(options.time);\n return;\n }\n throw new Error('Player not active');\n }\n async setVolume(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setVolume(options.volume);\n return;\n }\n throw new Error('Player not active');\n }\n async getPosition() {\n if (this.jwPlayerInstance) {\n return { position: this.jwPlayerInstance.getPosition() };\n }\n throw new Error('Player not active');\n }\n async getState() {\n if (!this.jwPlayerInstance) {\n // IDLE (no player)\n return { state: 0 };\n }\n // Convert JW Player state to our state format\n // jwplayer: BUFFERING(3), IDLE(0), COMPLETE(4), PAUSED(2), PLAYING(1)\n // our API: IDLE(0), BUFFERING(1), PLAYING(2), PAUSED(3), COMPLETE(4)\n const jwState = this.jwPlayerInstance.getState();\n let state = 0;\n switch (jwState) {\n case 'buffering':\n state = 1;\n break;\n case 'playing':\n state = 2;\n break;\n case 'paused':\n state = 3;\n break;\n default:\n state = 0; // idle\n }\n return { state };\n }\n async setSpeed(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setPlaybackRate(options.speed);\n return;\n }\n throw new Error('Player not active');\n }\n async setPlaylistIndex(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.playlistItem(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylist(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlistUrl);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylistWithItems(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlist);\n return;\n }\n throw new Error('Player not active');\n }\n async getAudioTracks() {\n if (this.jwPlayerInstance) {\n const tracks = this.jwPlayerInstance.getAudioTracks();\n return { tracks };\n }\n throw new Error('Player not active');\n }\n async getCurrentAudioTrack() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentAudioTrack();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentAudioTrack(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentAudioTrack(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async getCaptions() {\n if (this.jwPlayerInstance) {\n const captions = this.jwPlayerInstance.getCaptionsList();\n return { captions };\n }\n throw new Error('Player not active');\n }\n async getCurrentCaptions() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentCaptions();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentCaptions(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentCaptions(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async currentPlaylist() {\n if (this.jwPlayerInstance) {\n return this.jwPlayerInstance.getPlaylist();\n }\n throw new Error('Player not active');\n }\n async resume() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.play();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst JwPlayer = registerPlugin('JwPlayer', {\n web: () => import('./web').then((m) => new m.JwPlayerWeb()),\n});\nexport * from './definitions';\nexport { JwPlayer };\n//# sourceMappingURL=index.js.map","/// <reference types=\"jwplayer\" />\nimport { WebPlugin } from '@capacitor/core';\nexport class JwPlayerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n // Track if our overlay is currently displayed\n this.overlayDiv = null;\n // Store JW Player instance\n this.jwPlayerInstance = null;\n }\n // Generate a UUID that works in all browsers\n generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n async initialize(options) {\n console.log('INITIALIZE', options);\n if (!options.playerUrl) {\n throw new Error('playerUrl is required for web implementation');\n }\n const playerUrl = options.playerUrl;\n await new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = playerUrl;\n script.onload = () => resolve(null);\n script.onerror = () => reject(new Error('Failed to load JW Player script'));\n document.head.appendChild(script);\n });\n // Check if jwplayer() is available globally\n if (typeof window.jwplayer !== 'function') {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n }\n async play(options) {\n if (!window.jwplayer) {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n // Create fullscreen overlay div\n if (this.overlayDiv) {\n // Remove existing overlay if it exists\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // Create new overlay div (this will be our red background container)\n this.overlayDiv = document.createElement('div');\n // Style the outer overlay to take up 100% of screen\n Object.assign(this.overlayDiv.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n display: 'flex',\n });\n // Create the inner div for the player\n const playerDiv = document.createElement('div');\n const uniqueId = this.generateUUID();\n const id = `jw-player-${uniqueId}`;\n playerDiv.id = id;\n // Style the inner player div\n Object.assign(playerDiv.style, {\n width: '100%',\n height: '100%',\n margin: '0 auto',\n });\n // Create close (X) button\n const closeButton = document.createElement('button');\n closeButton.textContent = 'X';\n Object.assign(closeButton.style, {\n position: 'absolute',\n top: '10px',\n left: '10px',\n background: 'rgba(0, 0, 0, 0.5)',\n color: 'white',\n border: 'none',\n borderRadius: '50%',\n width: '30px',\n height: '30px',\n fontSize: '16px',\n fontWeight: 'bold',\n cursor: 'pointer',\n zIndex: '10000',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0',\n });\n // Add click handler to close button\n closeButton.addEventListener('click', () => {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n }\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n this.notifyListeners('playerDismissed', {});\n }\n });\n // Append inner div to the red overlay\n this.overlayDiv.appendChild(playerDiv);\n // Append close button to overlay\n this.overlayDiv.appendChild(closeButton);\n // Append outer div to body\n document.body.appendChild(this.overlayDiv);\n // Setup player on the inner div\n this.jwPlayerInstance = jwplayer(id).setup({\n playlist: options.mediaType === 'playlist' ? options.mediaUrl : [{ file: options.mediaUrl, title: 'Video' }],\n width: '100%',\n height: '100%',\n autostart: options.autostart || false,\n controls: true,\n displaytitle: false,\n });\n // Add unified event handlers to match iOS and Android\n this.setupEventHandlers();\n return;\n }\n // Setup unified event handlers to match iOS and Android\n setupEventHandlers() {\n if (!this.jwPlayerInstance)\n return;\n // Ready event\n this.jwPlayerInstance.on('ready', () => {\n this.notifyListeners('ready', {});\n });\n // Error event\n this.jwPlayerInstance.on('error', (error) => {\n this.notifyListeners('error', {\n message: (error === null || error === void 0 ? void 0 : error.message) || 'Unknown error',\n code: (error === null || error === void 0 ? void 0 : error.code) || -1,\n });\n });\n // Play event\n this.jwPlayerInstance.on('play', () => {\n this.notifyListeners('play', { reason: 'external' });\n });\n // Pause event\n this.jwPlayerInstance.on('pause', () => {\n this.notifyListeners('pause', { reason: 'external' });\n });\n // Complete event\n this.jwPlayerInstance.on('complete', () => {\n this.notifyListeners('complete', {});\n });\n // Seek event\n this.jwPlayerInstance.on('seek', (event) => {\n this.notifyListeners('seek', {\n position: event.position,\n offset: event.offset,\n });\n });\n // Time event (throttled to not fire too often)\n let lastTimeUpdate = 0;\n this.jwPlayerInstance.on('time', (event) => {\n const now = Date.now();\n // Throttle to once per second max\n if (now - lastTimeUpdate > 1000) {\n this.notifyListeners('time', {\n position: event.position,\n duration: event.duration,\n });\n lastTimeUpdate = now;\n }\n });\n // Playlist item event\n this.jwPlayerInstance.on('playlistItem', (event) => {\n var _a;\n this.notifyListeners('playlistItem', {\n index: event.index,\n title: ((_a = event.item) === null || _a === void 0 ? void 0 : _a.title) || '',\n });\n });\n // Playlist complete event\n this.jwPlayerInstance.on('playlistComplete', () => {\n this.notifyListeners('playlistComplete', {});\n });\n // Controls visibility event\n this.jwPlayerInstance.on('controls', (event) => {\n this.notifyListeners('controlsChanged', {\n visible: event.controls,\n });\n });\n }\n async pause() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.pause();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n async stop() {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // The complete event will be triggered by the JW Player event handler,\n // but since we're removing the player instance, we need to send it manually here\n this.notifyListeners('playerDismissed', {});\n return;\n }\n throw new Error('Player not active');\n }\n async seekTo(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.seek(options.time);\n return;\n }\n throw new Error('Player not active');\n }\n async setVolume(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setVolume(options.volume);\n return;\n }\n throw new Error('Player not active');\n }\n async getPosition() {\n if (this.jwPlayerInstance) {\n return { position: this.jwPlayerInstance.getPosition() };\n }\n throw new Error('Player not active');\n }\n async getState() {\n if (!this.jwPlayerInstance) {\n // IDLE (no player)\n return { state: 0 };\n }\n // Convert JW Player state to our state format\n // jwplayer: BUFFERING(3), IDLE(0), COMPLETE(4), PAUSED(2), PLAYING(1)\n // our API: IDLE(0), BUFFERING(1), PLAYING(2), PAUSED(3), COMPLETE(4)\n const jwState = this.jwPlayerInstance.getState();\n let state = 0;\n switch (jwState) {\n case 'buffering':\n state = 1;\n break;\n case 'playing':\n state = 2;\n break;\n case 'paused':\n state = 3;\n break;\n default:\n state = 0; // idle\n }\n return { state };\n }\n async setSpeed(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setPlaybackRate(options.speed);\n return;\n }\n throw new Error('Player not active');\n }\n async setPlaylistIndex(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.playlistItem(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylist(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlistUrl);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylistWithItems(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlist);\n return;\n }\n throw new Error('Player not active');\n }\n async getAudioTracks() {\n if (this.jwPlayerInstance) {\n const tracks = this.jwPlayerInstance.getAudioTracks();\n return { tracks };\n }\n throw new Error('Player not active');\n }\n async getCurrentAudioTrack() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentAudioTrack();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentAudioTrack(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentAudioTrack(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async getCaptions() {\n if (this.jwPlayerInstance) {\n const captions = this.jwPlayerInstance.getCaptionsList();\n return { captions };\n }\n throw new Error('Player not active');\n }\n async getCurrentCaptions() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentCaptions();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentCaptions(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentCaptions(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async currentPlaylist() {\n if (this.jwPlayerInstance) {\n return this.jwPlayerInstance.getPlaylist();\n }\n throw new Error('Player not active');\n }\n async resume() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.play();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst JwPlayer = registerPlugin('JwPlayer', {\n web: () => import('./web').then((m) => new m.JwPlayerWeb()),\n});\nexport * from './definitions';\nexport { JwPlayer };\n//# sourceMappingURL=index.js.map","/// <reference types=\"jwplayer\" />\nimport { WebPlugin } from '@capacitor/core';\nexport class JwPlayerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n // Track if our overlay is currently displayed\n this.overlayDiv = null;\n // Store JW Player instance\n this.jwPlayerInstance = null;\n }\n // Generate a UUID that works in all browsers\n generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n async initialize(options) {\n console.log('INITIALIZE', options);\n if (!options.playerUrl) {\n throw new Error('playerUrl is required for web implementation');\n }\n const playerUrl = options.playerUrl;\n await new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = playerUrl;\n script.onload = () => resolve(null);\n script.onerror = () => reject(new Error('Failed to load JW Player script'));\n document.head.appendChild(script);\n });\n // Check if jwplayer() is available globally\n if (typeof window.jwplayer !== 'function') {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n }\n async play(options) {\n if (!window.jwplayer) {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n // Create fullscreen overlay div\n if (this.overlayDiv) {\n // Remove existing overlay if it exists\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // Create new overlay div (this will be our red background container)\n this.overlayDiv = document.createElement('div');\n // Style the outer overlay to take up 100% of screen\n Object.assign(this.overlayDiv.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n display: 'flex',\n });\n // Create the inner div for the player\n const playerDiv = document.createElement('div');\n const uniqueId = this.generateUUID();\n const id = `jw-player-${uniqueId}`;\n playerDiv.id = id;\n // Style the inner player div\n Object.assign(playerDiv.style, {\n width: '100%',\n height: '100%',\n margin: '0 auto',\n });\n // Create close (X) button\n const closeButton = document.createElement('button');\n closeButton.textContent = 'X';\n Object.assign(closeButton.style, {\n position: 'absolute',\n top: '10px',\n left: '10px',\n background: 'rgba(0, 0, 0, 0.5)',\n color: 'white',\n border: 'none',\n borderRadius: '50%',\n width: '30px',\n height: '30px',\n fontSize: '16px',\n fontWeight: 'bold',\n cursor: 'pointer',\n zIndex: '10000',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0',\n });\n // Add click handler to close button\n closeButton.addEventListener('click', () => {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n }\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n this.notifyListeners('playerDismissed', {});\n }\n });\n // Append inner div to the red overlay\n this.overlayDiv.appendChild(playerDiv);\n // Append close button to overlay\n this.overlayDiv.appendChild(closeButton);\n // Append outer div to body\n document.body.appendChild(this.overlayDiv);\n // Setup player on the inner div\n this.jwPlayerInstance = jwplayer(id).setup({\n playlist: options.mediaType === 'playlist' ? options.mediaUrl : [{ file: options.mediaUrl, title: 'Video' }],\n width: '100%',\n height: '100%',\n autostart: options.autostart || false,\n controls: true,\n displaytitle: false,\n });\n // Add unified event handlers to match iOS and Android\n this.setupEventHandlers();\n return;\n }\n // Setup unified event handlers to match iOS and Android\n setupEventHandlers() {\n if (!this.jwPlayerInstance)\n return;\n // Ready event\n this.jwPlayerInstance.on('ready', () => {\n this.notifyListeners('ready', {});\n });\n // Error event\n this.jwPlayerInstance.on('error', (error) => {\n this.notifyListeners('error', {\n message: (error === null || error === void 0 ? void 0 : error.message) || 'Unknown error',\n code: (error === null || error === void 0 ? void 0 : error.code) || -1,\n });\n });\n // Play event\n this.jwPlayerInstance.on('play', () => {\n this.notifyListeners('play', { reason: 'external' });\n });\n // Pause event\n this.jwPlayerInstance.on('pause', () => {\n this.notifyListeners('pause', { reason: 'external' });\n });\n // Complete event\n this.jwPlayerInstance.on('complete', () => {\n this.notifyListeners('complete', {});\n });\n // Seek event\n this.jwPlayerInstance.on('seek', (event) => {\n this.notifyListeners('seek', {\n position: event.position,\n offset: event.offset,\n });\n });\n // Time event (throttled to not fire too often)\n let lastTimeUpdate = 0;\n this.jwPlayerInstance.on('time', (event) => {\n const now = Date.now();\n // Throttle to once per second max\n if (now - lastTimeUpdate > 1000) {\n this.notifyListeners('time', {\n position: event.position,\n duration: event.duration,\n });\n lastTimeUpdate = now;\n }\n });\n // Playlist item event\n this.jwPlayerInstance.on('playlistItem', (event) => {\n var _a;\n this.notifyListeners('playlistItem', {\n index: event.index,\n title: ((_a = event.item) === null || _a === void 0 ? void 0 : _a.title) || '',\n });\n });\n // Playlist complete event\n this.jwPlayerInstance.on('playlistComplete', () => {\n this.notifyListeners('playlistComplete', {});\n });\n // Controls visibility event\n this.jwPlayerInstance.on('controls', (event) => {\n this.notifyListeners('controlsChanged', {\n visible: event.controls,\n });\n });\n }\n async pause() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.pause();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n async stop() {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // The complete event will be triggered by the JW Player event handler,\n // but since we're removing the player instance, we need to send it manually here\n this.notifyListeners('playerDismissed', {});\n return;\n }\n throw new Error('Player not active');\n }\n async seekTo(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.seek(options.time);\n return;\n }\n throw new Error('Player not active');\n }\n async setVolume(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setVolume(options.volume);\n return;\n }\n throw new Error('Player not active');\n }\n async getPosition() {\n if (this.jwPlayerInstance) {\n return { position: this.jwPlayerInstance.getPosition() };\n }\n throw new Error('Player not active');\n }\n async getState() {\n if (!this.jwPlayerInstance) {\n // IDLE (no player)\n return { state: 0 };\n }\n // Convert JW Player state to our state format\n // jwplayer: BUFFERING(3), IDLE(0), COMPLETE(4), PAUSED(2), PLAYING(1)\n // our API: IDLE(0), BUFFERING(1), PLAYING(2), PAUSED(3), COMPLETE(4)\n const jwState = this.jwPlayerInstance.getState();\n let state = 0;\n switch (jwState) {\n case 'buffering':\n state = 1;\n break;\n case 'playing':\n state = 2;\n break;\n case 'paused':\n state = 3;\n break;\n default:\n state = 0; // idle\n }\n return { state };\n }\n async setSpeed(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setPlaybackRate(options.speed);\n return;\n }\n throw new Error('Player not active');\n }\n async setPlaylistIndex(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.playlistItem(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylist(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlistUrl);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylistWithItems(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlist);\n return;\n }\n throw new Error('Player not active');\n }\n async getAudioTracks() {\n if (this.jwPlayerInstance) {\n const tracks = this.jwPlayerInstance.getAudioTracks();\n return { tracks };\n }\n throw new Error('Player not active');\n }\n async getCurrentAudioTrack() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentAudioTrack();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentAudioTrack(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentAudioTrack(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async getCaptions() {\n if (this.jwPlayerInstance) {\n const captions = this.jwPlayerInstance.getCaptionsList();\n return { captions };\n }\n throw new Error('Player not active');\n }\n async getCurrentCaptions() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentCaptions();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentCaptions(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentCaptions(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async currentPlaylist() {\n if (this.jwPlayerInstance) {\n return this.jwPlayerInstance.getPlaylist();\n }\n throw new Error('Player not active');\n }\n async resume() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.play();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst JwPlayer = registerPlugin('JwPlayer', {\n web: () => import('./web').then((m) => new m.JwPlayerWeb()),\n});\nexport * from './definitions';\nexport { JwPlayer };\n//# sourceMappingURL=index.js.map","/// <reference types=\"jwplayer\" />\nimport { WebPlugin } from '@capacitor/core';\nexport class JwPlayerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n // Track if our overlay is currently displayed\n this.overlayDiv = null;\n // Store JW Player instance\n this.jwPlayerInstance = null;\n }\n // Generate a UUID that works in all browsers\n generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n async initialize(options) {\n console.log('INITIALIZE', options);\n if (!options.playerUrl) {\n throw new Error('playerUrl is required for web implementation');\n }\n const playerUrl = options.playerUrl;\n await new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = playerUrl;\n script.onload = () => resolve(null);\n script.onerror = () => reject(new Error('Failed to load JW Player script'));\n document.head.appendChild(script);\n });\n // Check if jwplayer() is available globally\n if (typeof window.jwplayer !== 'function') {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n }\n async play(options) {\n if (!window.jwplayer) {\n throw new Error('JW Player script failed to load properly - jwplayer() function not found');\n }\n // Create fullscreen overlay div\n if (this.overlayDiv) {\n // Remove existing overlay if it exists\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // Create new overlay div (this will be our red background container)\n this.overlayDiv = document.createElement('div');\n // Style the outer overlay to take up 100% of screen\n Object.assign(this.overlayDiv.style, {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n zIndex: '9999',\n display: 'flex',\n });\n // Create the inner div for the player\n const playerDiv = document.createElement('div');\n const uniqueId = this.generateUUID();\n const id = `jw-player-${uniqueId}`;\n playerDiv.id = id;\n // Style the inner player div\n Object.assign(playerDiv.style, {\n width: '100%',\n height: '100%',\n margin: '0 auto',\n });\n // Create close (X) button\n const closeButton = document.createElement('button');\n closeButton.textContent = 'X';\n Object.assign(closeButton.style, {\n position: 'absolute',\n top: '10px',\n left: '10px',\n background: 'rgba(0, 0, 0, 0.5)',\n color: 'white',\n border: 'none',\n borderRadius: '50%',\n width: '30px',\n height: '30px',\n fontSize: '16px',\n fontWeight: 'bold',\n cursor: 'pointer',\n zIndex: '10000',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0',\n });\n // Add click handler to close button\n closeButton.addEventListener('click', () => {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n }\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n this.notifyListeners('playerDismissed', {});\n }\n });\n // Append inner div to the red overlay\n this.overlayDiv.appendChild(playerDiv);\n // Append close button to overlay\n this.overlayDiv.appendChild(closeButton);\n // Append outer div to body\n document.body.appendChild(this.overlayDiv);\n // Setup player on the inner div\n this.jwPlayerInstance = jwplayer(id).setup({\n playlist: options.mediaType === 'playlist' ? options.mediaUrl : [{ file: options.mediaUrl, title: 'Video' }],\n width: '100%',\n height: '100%',\n autostart: options.autostart || false,\n controls: true,\n displaytitle: false,\n });\n // Add unified event handlers to match iOS and Android\n this.setupEventHandlers();\n return;\n }\n // Setup unified event handlers to match iOS and Android\n setupEventHandlers() {\n if (!this.jwPlayerInstance)\n return;\n // Ready event\n this.jwPlayerInstance.on('ready', () => {\n this.notifyListeners('ready', {});\n });\n // Error event\n this.jwPlayerInstance.on('error', (error) => {\n this.notifyListeners('error', {\n message: (error === null || error === void 0 ? void 0 : error.message) || 'Unknown error',\n code: (error === null || error === void 0 ? void 0 : error.code) || -1,\n });\n });\n // Play event\n this.jwPlayerInstance.on('play', () => {\n this.notifyListeners('play', { reason: 'external' });\n });\n // Pause event\n this.jwPlayerInstance.on('pause', () => {\n this.notifyListeners('pause', { reason: 'external' });\n });\n // Complete event\n this.jwPlayerInstance.on('complete', () => {\n this.notifyListeners('complete', {});\n });\n // Seek event\n this.jwPlayerInstance.on('seek', (event) => {\n this.notifyListeners('seek', {\n position: event.position,\n offset: event.offset,\n });\n });\n // Time event (throttled to not fire too often)\n let lastTimeUpdate = 0;\n this.jwPlayerInstance.on('time', (event) => {\n const now = Date.now();\n // Throttle to once per second max\n if (now - lastTimeUpdate > 1000) {\n this.notifyListeners('time', {\n position: event.position,\n duration: event.duration,\n });\n lastTimeUpdate = now;\n }\n });\n // Playlist item event\n this.jwPlayerInstance.on('playlistItem', (event) => {\n var _a;\n this.notifyListeners('playlistItem', {\n index: event.index,\n title: ((_a = event.item) === null || _a === void 0 ? void 0 : _a.title) || '',\n });\n });\n // Playlist complete event\n this.jwPlayerInstance.on('playlistComplete', () => {\n this.notifyListeners('playlistComplete', {});\n });\n // Controls visibility event\n this.jwPlayerInstance.on('controls', (event) => {\n this.notifyListeners('controlsChanged', {\n visible: event.controls,\n });\n });\n }\n async pause() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.pause();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n async stop() {\n var _a;\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.remove();\n this.jwPlayerInstance = null;\n if ((_a = this.overlayDiv) === null || _a === void 0 ? void 0 : _a.parentNode) {\n document.body.removeChild(this.overlayDiv);\n this.overlayDiv = null;\n }\n // The complete event will be triggered by the JW Player event handler,\n // but since we're removing the player instance, we need to send it manually here\n this.notifyListeners('playerDismissed', {});\n return;\n }\n throw new Error('Player not active');\n }\n async seekTo(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.seek(options.time);\n return;\n }\n throw new Error('Player not active');\n }\n async setVolume(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setVolume(options.volume);\n return;\n }\n throw new Error('Player not active');\n }\n async getPosition() {\n if (this.jwPlayerInstance) {\n return { position: this.jwPlayerInstance.getPosition() };\n }\n throw new Error('Player not active');\n }\n async getState() {\n if (!this.jwPlayerInstance) {\n // IDLE (no player)\n return { state: 0 };\n }\n // Convert JW Player state to our state format\n // jwplayer: BUFFERING(3), IDLE(0), COMPLETE(4), PAUSED(2), PLAYING(1)\n // our API: IDLE(0), BUFFERING(1), PLAYING(2), PAUSED(3), COMPLETE(4)\n const jwState = this.jwPlayerInstance.getState();\n let state = 0;\n switch (jwState) {\n case 'buffering':\n state = 1;\n break;\n case 'playing':\n state = 2;\n break;\n case 'paused':\n state = 3;\n break;\n default:\n state = 0; // idle\n }\n return { state };\n }\n async setSpeed(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setPlaybackRate(options.speed);\n return;\n }\n throw new Error('Player not active');\n }\n async setPlaylistIndex(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.playlistItem(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylist(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlistUrl);\n return;\n }\n throw new Error('Player not active');\n }\n async loadPlaylistWithItems(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.load(options.playlist);\n return;\n }\n throw new Error('Player not active');\n }\n async getAudioTracks() {\n if (this.jwPlayerInstance) {\n const tracks = this.jwPlayerInstance.getAudioTracks();\n return { tracks };\n }\n throw new Error('Player not active');\n }\n async getCurrentAudioTrack() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentAudioTrack();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentAudioTrack(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentAudioTrack(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async getCaptions() {\n if (this.jwPlayerInstance) {\n const captions = this.jwPlayerInstance.getCaptionsList();\n return { captions };\n }\n throw new Error('Player not active');\n }\n async getCurrentCaptions() {\n if (this.jwPlayerInstance) {\n const index = this.jwPlayerInstance.getCurrentCaptions();\n return { index };\n }\n throw new Error('Player not active');\n }\n async setCurrentCaptions(options) {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.setCurrentCaptions(options.index);\n return;\n }\n throw new Error('Player not active');\n }\n async currentPlaylist() {\n if (this.jwPlayerInstance) {\n return this.jwPlayerInstance.getPlaylist();\n }\n throw new Error('Player not active');\n }\n async resume() {\n if (this.jwPlayerInstance) {\n this.jwPlayerInstance.play();\n // Event is fired by the event handler\n return;\n }\n throw new Error('Player not active');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
@@ -177,7 +177,7 @@ extension LinkedList: Collection {
|
|
|
177
177
|
public struct Index: Comparable {
|
|
178
178
|
public var node: Node<Value>?
|
|
179
179
|
|
|
180
|
-
public static func ==(lhs: Index, rhs: Index) -> Bool {
|
|
180
|
+
public static func == (lhs: Index, rhs: Index) -> Bool {
|
|
181
181
|
switch (lhs.node, rhs.node) {
|
|
182
182
|
case let (left?, right?):
|
|
183
183
|
return left === right
|
|
@@ -188,7 +188,7 @@ extension LinkedList: Collection {
|
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
public static func <(lhs: Index, rhs: Index) -> Bool {
|
|
191
|
+
public static func < (lhs: Index, rhs: Index) -> Bool {
|
|
192
192
|
guard lhs != rhs else {
|
|
193
193
|
return false
|
|
194
194
|
}
|