@ekg.training/ekg-video-player 1.3.3 → 1.4.1

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/README.md CHANGED
@@ -8,23 +8,23 @@ A customizable React-based video player library, supporting both React and plain
8
8
 
9
9
  ## Table of Contents
10
10
 
11
- - [Installation](#installation)
12
- - [Usage](#usage)
13
- - [React](#react)
14
- - [ESM (Browser)](#esm-browser)
15
- - [UMD (Browser)](#umd-browser)
16
- - [Limitations](#limitations)
17
- - [Player Props Reference](#player-props-reference)
18
- - [Top-level Config Object](#top-level-config-object)
19
- - [mediaPlayerProps (object)](#mediaplayerprops-object)
20
- - [posterProps (object)](#posterprops-object)
21
- - [subtitleTracks / chapterTracks (array)](#subtitletracks--chaptertracks-array)
22
- - [videoLayoutProps (object)](#videolayoutprops-object)
23
- - [audioLayoutProps (object)](#audiolayoutprops-object)
24
- - [videoWrapperProps (object)](#videowrapperprops-object)
25
- - [translations (object)](#translations-object)
26
- - [Documentation & Examples](#documentation--examples)
27
- - [License](#license)
11
+ - [Installation](#installation)
12
+ - [Usage](#usage)
13
+ - [React](#react)
14
+ - [ESM (Browser)](#esm-browser)
15
+ - [UMD (Browser)](#umd-browser)
16
+ - [Limitations](#limitations)
17
+ - [Player Props Reference](#player-props-reference)
18
+ - [Top-level Config Object](#top-level-config-object)
19
+ - [mediaPlayerProps (object)](#mediaplayerprops-object)
20
+ - [posterProps (object)](#posterprops-object)
21
+ - [subtitleTracks / chapterTracks (array)](#subtitletracks--chaptertracks-array)
22
+ - [videoLayoutProps (object)](#videolayoutprops-object)
23
+ - [audioLayoutProps (object)](#audiolayoutprops-object)
24
+ - [videoWrapperProps (object)](#videowrapperprops-object)
25
+ - [translations (object)](#translations-object)
26
+ - [Documentation & Examples](#documentation--examples)
27
+ - [License](#license)
28
28
 
29
29
  ## Installation
30
30
 
@@ -91,37 +91,69 @@ For a full working config, see [examples/React/src/App.js](https://github.com/cl
91
91
 
92
92
  ### Top-level Config Object
93
93
 
94
- - **mediaPlayerProps** (object, required): Main video/audio player options (see below)
95
- - **posterProps** (object, optional): Poster image options
96
- - **subtitleTracks** (array, optional): Subtitle track objects (see below)
97
- - **chapterTracks** (array, optional): Chapter track objects (see below)
98
- - **videoLayoutProps** (object, optional): Video layout customization (see below)
99
- - **audioLayoutProps** (object, optional): Audio layout customization
100
- - **videoWrapperProps** (object, optional): Advanced wrapper options (see [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx))
101
- - **translations** (object, optional): Custom UI translations
94
+ - **mediaPlayerProps** (object, required): Main video/audio player options (see below)
95
+ - **posterProps** (object, optional): Poster image options
96
+ - **subtitleTracks** (array, optional): Subtitle track objects (see below)
97
+ - **chapterTracks** (array, optional): Chapter track objects (see below)
98
+ - **videoLayoutProps** (object, optional): Video layout customization (see below)
99
+ - **audioLayoutProps** (object, optional): Audio layout customization
100
+ - **videoWrapperProps** (object, optional): Advanced wrapper options (see [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx))
101
+ - **translations** (object, optional): Custom UI translations
102
102
 
103
103
  ### mediaPlayerProps (object)
104
104
 
105
- - `src` (string): Video/audio source URL (required)
106
- - `poster` (string): Poster image URL
107
- - `title` (string): Media title
108
- - `rewindBy` (number): Amount (seconds) to rewind
109
- - `clipStartTime` (number): Start time for clip
110
- - `clipEndTime` (number|null): End time for clip
111
- - `viewType` (string): 'video' or 'audio'
112
- - `streamType` (string): e.g. 'on-demand'
113
- - `logLevel` (string): Logging level
114
- - `crossOrigin` (boolean): Set crossorigin attribute
115
- - `playsInline` (boolean): Play inline on mobile
116
- - `trackUserPreferences` (boolean): Enable/disable tracking of user preferences
117
- - `loop` (boolean): Loop playback
118
- - `onPause`, `onPlay`, `onPlaying`, `onLoopChange`, `onTimeUpdate`, `onLoad` (function): Event handlers
105
+ - `src` (string): Video/audio source URL (required)
106
+ - `poster` (string): Poster image URL
107
+ - `title` (string): Media title
108
+ - `rewindBy` (number): Amount (seconds) to rewind
109
+ - `clipStartTime` (number): Start time for clip
110
+ - `clipEndTime` (number|null): End time for clip
111
+ - `viewType` (string): 'video' or 'audio'
112
+ - `streamType` (string): e.g. 'on-demand'
113
+ - `logLevel` (string): Logging level
114
+ - `crossOrigin` (boolean): Set crossorigin attribute
115
+ - `playsInline` (boolean): Play inline on mobile
116
+ - `trackUserPreferences` (boolean): Enable/disable tracking of user preferences
117
+ - `saveUserPreferences` (function): Callback function with user preferences as an argument, which gets called whenever setting changes.
118
+ - `userPreferences` (object): User preference from database
119
+ - `loop` (boolean): Loop playback
120
+ - `onPause`, `onPlay`, `onPlaying`, `onLoopChange`, `onTimeUpdate`, `onLoad` (function): Event handlers
121
+
122
+ ### userPreferences (object)
123
+
124
+ The order at which preference will be used,
125
+
126
+ 1. mediaPlayerProps.userPreferences object
127
+ 2. preference values stored in localstorage
128
+ 3. default values as per below table
129
+
130
+ - `ekg-video-storage` (object): Preference object for custom features (eg. { thumbnails: true, isSkipQuiz: false })
131
+ - `custom-pref-storage` (object): Preference object for default features (eg. { volume: 0.38,muted: false, audioGain: null, lang: 'en-US', captions: true, rate: 0.8, quality: null })
132
+
133
+ Default behaviour of features if this object is not passed and not changed:
134
+
135
+ | Feature | Default Value |
136
+ | -------------------- | ------------------------------- |
137
+ | isSkipQuiz | true |
138
+ | showThumbnails | true |
139
+ | autoDetectThumbnail | true |
140
+ | volume | 100% |
141
+ | muted | false |
142
+ | allowAnalytics | false |
143
+ | allowPiP | false |
144
+ | rewindBy | 3 |
145
+ | clip | false |
146
+ | loop | false |
147
+ | trackUserPreferences | false |
148
+ | playbackRates | { min: 0.5, max: 2, step: 0.1 } |
149
+ | explanation_start | 0 |
150
+ | captions | true |
119
151
 
120
152
  ### posterProps (object)
121
153
 
122
- - `src` (string): Poster image URL
123
- - `alt` (string): Alt text
124
- - `crossOrigin` (boolean): Set crossorigin attribute
154
+ - `src` (string): Poster image URL
155
+ - `alt` (string): Alt text
156
+ - `crossOrigin` (boolean): Set crossorigin attribute
125
157
 
126
158
  ### subtitleTracks / chapterTracks (array)
127
159
 
@@ -141,30 +173,31 @@ See [`examples/React/src/App.js`](examples/React/src/App.js) or [`examples/Javas
141
173
 
142
174
  ### videoLayoutProps (object)
143
175
 
144
- - `thumbnails` (object): Thumbnail visibillity & VTT file URL for thumbnails
145
- - `playbackRates` (object): `{ min, max, step }` for playback speed
146
- `handouts` (array): Downloadable handout objects (`{ language, title, url }`)
147
- `quizzes` (array): Quiz objects (see [`examples/React/src/App.js`](examples/React/src/App.js))
148
- - `isSkipQuiz` (boolean): Enable/disable quiz skipping
149
- **Order in which factors are affecting visibility of quiz** - 1. mediaPlayerProps.trackUserPreferences if this flag is true, then isSkipQuiz value in 'custom-pref-storage' localstorage 2. videoLayoutProps.isSkipQuiz 3. default is true (i.e Quiz will not be visible)
150
- - `isPseudoFullscreen` (boolean): iOS fullscreen workaround
151
- - `toggleSkipQuiz`, `toggleIphoneFullScreen`, `toggleInfo` (function): UI toggles
152
- - `isQuizOpen`, `isInfoOpen` (boolean): UI state
153
- - `chapterTracks`, `subtitleTracks` (array): Track arrays (see above)
154
- - `windowProps` (object): Window size/orientation
155
- - `translations` (object): UI translations
156
- - `infoLink` (string): The link (image or video) to player information (e.g. instructions to use player)
157
- - `ecgLinks` (string or array): Array of an ECG image links or url of single ECG image link
158
- - `ecgNotes` (object): `{ title, content }` for ECG Notes
159
- - `allowPiP` (boolean): Enable/disable availability of PIP feature
160
- - `allowAnalytics` (boolean): Enable/disable Analytics to track user interaction with the video player by using Amplitude
161
- - `amplitudeApiKey` (string): API key for Amplitude
176
+ - `thumbnails` (object): Thumbnail visibillity & VTT file URL for thumbnails
177
+ - `playbackRates` (object): `{ min, max, step }` for playback speed
178
+ `handouts` (array): Downloadable handout objects (`{ language, title, url }`)
179
+ `quizzes` (array): Quiz objects (see [`examples/React/src/App.js`](examples/React/src/App.js))
180
+ - `isSkipQuiz` (boolean): Enable/disable quiz skipping
181
+ **Order in which factors are affecting visibility of quiz** - 1. mediaPlayerProps.trackUserPreferences if this flag is true, then isSkipQuiz value in 'custom-pref-storage' localstorage 2. videoLayoutProps.isSkipQuiz 3. default is true (i.e Quiz will not be visible)
182
+ - `isPseudoFullscreen` (boolean): iOS fullscreen workaround
183
+ - `toggleSkipQuiz`, `toggleIphoneFullScreen`, `toggleInfo` (function): UI toggles
184
+ - `isQuizOpen`, `isInfoOpen` (boolean): UI state
185
+ - `chapterTracks`, `subtitleTracks` (array): Track arrays (see above)
186
+ - `windowProps` (object): Window size/orientation
187
+ - `translations` (object): UI translations
188
+ - `infoLink` (string): The link (image or video) to player information (e.g. instructions to use player)
189
+ - `ecgLinks` (string or array): Array of an ECG image links or url of single ECG image link
190
+ - `ecgNotes` (object): `{ title, content }` for ECG Notes
191
+ - `allowPiP` (boolean): Enable/disable availability of PIP feature
192
+ - `allowAnalytics` (boolean): Enable/disable Analytics to track user interaction with the video player by using Amplitude
193
+ - `amplitudeApiKey` (string): API key for Amplitude
162
194
 
163
195
  ### thumbnails (object)
164
196
 
165
- - `showThumbnails` (boolean): Enable/disable visibility of thumbnails over seek bar (default_value: true)
166
- - `customUrl` (string): VTT file URL
167
- - `autoDetectThumbnail` (boolean): Enable/disable feature of searching for VTT file in the same folder the video is present. (eg. video URL: https://storage.googleapis.com/muxdemofiles/mux.mp4, thumbnail URL: https://storage.googleapis.com/muxdemofiles/thumbnail/mux.vtt) (default_value: true)
197
+ - `showThumbnails` (boolean): Enable/disable visibility of thumbnails over seek bar (default_value: true)
198
+ - `customUrl` (string): VTT file URL
199
+ - `autoDetectThumbnail` (boolean): Enable/disable feature of searching for VTT file in the same folder the video is present. (eg. video URL: https://storage.googleapis.com/muxdemofiles/mux.mp4, thumbnail URL: https://storage.googleapis.com/muxdemofiles/thumbnail/mux.vtt) (default_value: true)
200
+ For this prop to work, It needs thumbnail vtt URL to be publically available.
168
201
 
169
202
  ### audioLayoutProps (object)
170
203
 
@@ -228,21 +261,21 @@ See [examples/React/src/App.js](https://github.com/close2realtraining/ekg-video-
228
261
 
229
262
  ### Amplitude for Product Analytics
230
263
 
231
- - `cc_text_toggled` (boolean): tracks whether closed captions (CC) are toggled on or off.
232
- - `thumbnail_toggled` (boolean): tracks whether the thumbnail preview is toggled on or off.
233
- - `info_popup_toggled` (boolean): tracks whether the info popup is opened or closed.
234
- - `in_vid_quiz_toggled` (boolean): tracks whether in-video quizzes are toggled on or off.
235
- - `ecg_popup_toggled` (boolean): tracks whether the ECG popup is opened or closed.
236
- - `ecg_notes_toggled` (boolean): tracks whether ECG notes visibility is toggled on or off.
237
- - `chapter_popup_toggled` (boolean): tracks whether the chapter popup is opened or closed.
238
- - `chapter_changed` (string): tracks the name of the chapter the user switched to.
239
- - `pip_mode_toggled` (boolean): tracks whether Picture-in-Picture (PiP) mode is toggled on or off.
240
- - `fullscreen_mode_toggled` (boolean): tracks whether fullscreen mode is toggled on or off.
241
- - `handout_popup_toggled` (boolean): tracks whether the handout popup is opened or closed.
242
- - `handout_file` (string): tracks which handout file the user clicked.
243
- - `settings_popup_toggled` (boolean): tracks whether the settings popup is opened or closed.
244
- - `playback_speed_changed` (number): tracks the playback speed chosen by the user.
245
- - `volume_level_changed` (number): tracks the volume level set by the user.
264
+ - `cc_text_toggled` (boolean): tracks whether closed captions (CC) are toggled on or off.
265
+ - `thumbnail_toggled` (boolean): tracks whether the thumbnail preview is toggled on or off.
266
+ - `info_popup_toggled` (boolean): tracks whether the info popup is opened or closed.
267
+ - `in_vid_quiz_toggled` (boolean): tracks whether in-video quizzes are toggled on or off.
268
+ - `ecg_popup_toggled` (boolean): tracks whether the ECG popup is opened or closed.
269
+ - `ecg_notes_toggled` (boolean): tracks whether ECG notes visibility is toggled on or off.
270
+ - `chapter_popup_toggled` (boolean): tracks whether the chapter popup is opened or closed.
271
+ - `chapter_changed` (string): tracks the name of the chapter the user switched to.
272
+ - `pip_mode_toggled` (boolean): tracks whether Picture-in-Picture (PiP) mode is toggled on or off.
273
+ - `fullscreen_mode_toggled` (boolean): tracks whether fullscreen mode is toggled on or off.
274
+ - `handout_popup_toggled` (boolean): tracks whether the handout popup is opened or closed.
275
+ - `handout_file` (string): tracks which handout file the user clicked.
276
+ - `settings_popup_toggled` (boolean): tracks whether the settings popup is opened or closed.
277
+ - `playback_speed_changed` (number): tracks the playback speed chosen by the user.
278
+ - `volume_level_changed` (number): tracks the volume level set by the user.
246
279
 
247
280
  ### ecgNotes (object)
248
281
 
@@ -252,12 +285,12 @@ The `ecgNotes.content` field supports a dynamic JSON structure used by **Content
252
285
 
253
286
  Example supported keys inside `content`:
254
287
 
255
- - **text**: WhatsApp-style rich text (`*bold*`, `_italic_`, `~strike~`, code blocks, links, `
288
+ - **text**: WhatsApp-style rich text (`*bold*`, `_italic_`, `~strike~`, code blocks, links, `
256
289
  `, ` `)
257
- - **html**: Raw HTML rendered using `dangerouslySetInnerHTML`
258
- - **tabs**: Array of tab objects (`{ id, label, content }`)
259
- - **accordion**: Accordion sections (`{ head, content }`)
260
- - **content**: Nested container enabling recursive structure (content → tabs → accordion → content → …)
290
+ - **html**: Raw HTML rendered using `dangerouslySetInnerHTML`
291
+ - **tabs**: Array of tab objects (`{ id, label, content }`)
292
+ - **accordion**: Accordion sections (`{ head, content }`)
293
+ - **content**: Nested container enabling recursive structure (content → tabs → accordion → content → …)
261
294
 
262
295
  Example:
263
296
 
@@ -338,8 +371,8 @@ Line 2
338
371
 
339
372
  ## Documentation & Examples
340
373
 
341
- - See [GitHub repository](https://github.com/close2realtraining/ekg-video-player) for full documentation, advanced usage, and examples.
342
- - Example configs: `examples/React/src/App.js`, `examples/Javascript/main.js`
374
+ - See [GitHub repository](https://github.com/close2realtraining/ekg-video-player) for full documentation, advanced usage, and examples.
375
+ - Example configs: `examples/React/src/App.js`, `examples/Javascript/main.js`
343
376
 
344
377
  ## License
345
378
 
package/README.npm.md CHANGED
@@ -8,23 +8,23 @@ A customizable React-based video player library, supporting both React and plain
8
8
 
9
9
  ## Table of Contents
10
10
 
11
- - [Installation](#installation)
12
- - [Usage](#usage)
13
- - [React](#react)
14
- - [ESM (Browser)](#esm-browser)
15
- - [UMD (Browser)](#umd-browser)
16
- - [Limitations](#limitations)
17
- - [Player Props Reference](#player-props-reference)
18
- - [Top-level Config Object](#top-level-config-object)
19
- - [mediaPlayerProps (object)](#mediaplayerprops-object)
20
- - [posterProps (object)](#posterprops-object)
21
- - [subtitleTracks / chapterTracks (array)](#subtitletracks--chaptertracks-array)
22
- - [videoLayoutProps (object)](#videolayoutprops-object)
23
- - [audioLayoutProps (object)](#audiolayoutprops-object)
24
- - [videoWrapperProps (object)](#videowrapperprops-object)
25
- - [translations (object)](#translations-object)
26
- - [Documentation & Examples](#documentation--examples)
27
- - [License](#license)
11
+ - [Installation](#installation)
12
+ - [Usage](#usage)
13
+ - [React](#react)
14
+ - [ESM (Browser)](#esm-browser)
15
+ - [UMD (Browser)](#umd-browser)
16
+ - [Limitations](#limitations)
17
+ - [Player Props Reference](#player-props-reference)
18
+ - [Top-level Config Object](#top-level-config-object)
19
+ - [mediaPlayerProps (object)](#mediaplayerprops-object)
20
+ - [posterProps (object)](#posterprops-object)
21
+ - [subtitleTracks / chapterTracks (array)](#subtitletracks--chaptertracks-array)
22
+ - [videoLayoutProps (object)](#videolayoutprops-object)
23
+ - [audioLayoutProps (object)](#audiolayoutprops-object)
24
+ - [videoWrapperProps (object)](#videowrapperprops-object)
25
+ - [translations (object)](#translations-object)
26
+ - [Documentation & Examples](#documentation--examples)
27
+ - [License](#license)
28
28
 
29
29
  ## Installation
30
30
 
@@ -91,37 +91,69 @@ For a full working config, see [examples/React/src/App.js](https://github.com/cl
91
91
 
92
92
  ### Top-level Config Object
93
93
 
94
- - **mediaPlayerProps** (object, required): Main video/audio player options (see below)
95
- - **posterProps** (object, optional): Poster image options
96
- - **subtitleTracks** (array, optional): Subtitle track objects (see below)
97
- - **chapterTracks** (array, optional): Chapter track objects (see below)
98
- - **videoLayoutProps** (object, optional): Video layout customization (see below)
99
- - **audioLayoutProps** (object, optional): Audio layout customization
100
- - **videoWrapperProps** (object, optional): Advanced wrapper options (see [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx))
101
- - **translations** (object, optional): Custom UI translations
94
+ - **mediaPlayerProps** (object, required): Main video/audio player options (see below)
95
+ - **posterProps** (object, optional): Poster image options
96
+ - **subtitleTracks** (array, optional): Subtitle track objects (see below)
97
+ - **chapterTracks** (array, optional): Chapter track objects (see below)
98
+ - **videoLayoutProps** (object, optional): Video layout customization (see below)
99
+ - **audioLayoutProps** (object, optional): Audio layout customization
100
+ - **videoWrapperProps** (object, optional): Advanced wrapper options (see [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx))
101
+ - **translations** (object, optional): Custom UI translations
102
102
 
103
103
  ### mediaPlayerProps (object)
104
104
 
105
- - `src` (string): Video/audio source URL (required)
106
- - `poster` (string): Poster image URL
107
- - `title` (string): Media title
108
- - `rewindBy` (number): Amount (seconds) to rewind
109
- - `clipStartTime` (number): Start time for clip
110
- - `clipEndTime` (number|null): End time for clip
111
- - `viewType` (string): 'video' or 'audio'
112
- - `streamType` (string): e.g. 'on-demand'
113
- - `logLevel` (string): Logging level
114
- - `crossOrigin` (boolean): Set crossorigin attribute
115
- - `playsInline` (boolean): Play inline on mobile
116
- - `trackUserPreferences` (boolean): Enable/disable tracking of user preferences
117
- - `loop` (boolean): Loop playback
118
- - `onPause`, `onPlay`, `onPlaying`, `onLoopChange`, `onTimeUpdate`, `onLoad` (function): Event handlers
105
+ - `src` (string): Video/audio source URL (required)
106
+ - `poster` (string): Poster image URL
107
+ - `title` (string): Media title
108
+ - `rewindBy` (number): Amount (seconds) to rewind
109
+ - `clipStartTime` (number): Start time for clip
110
+ - `clipEndTime` (number|null): End time for clip
111
+ - `viewType` (string): 'video' or 'audio'
112
+ - `streamType` (string): e.g. 'on-demand'
113
+ - `logLevel` (string): Logging level
114
+ - `crossOrigin` (boolean): Set crossorigin attribute
115
+ - `playsInline` (boolean): Play inline on mobile
116
+ - `trackUserPreferences` (boolean): Enable/disable tracking of user preferences
117
+ - `saveUserPreferences` (function): Callback function with user preferences as an argument, which gets called whenever setting changes.
118
+ - `userPreferences` (object): User preference from database
119
+ - `loop` (boolean): Loop playback
120
+ - `onPause`, `onPlay`, `onPlaying`, `onLoopChange`, `onTimeUpdate`, `onLoad` (function): Event handlers
121
+
122
+ ### userPreferences (object)
123
+
124
+ The order at which preference will be used,
125
+
126
+ 1. mediaPlayerProps.userPreferences object
127
+ 2. preference values stored in localstorage
128
+ 3. default values as per below table
129
+
130
+ - `ekg-video-storage` (object): Preference object for custom features (eg. { thumbnails: true, isSkipQuiz: false })
131
+ - `custom-pref-storage` (object): Preference object for default features (eg. { volume: 0.38,muted: false, audioGain: null, lang: 'en-US', captions: true, rate: 0.8, quality: null })
132
+
133
+ Default behaviour of features if this object is not passed and not changed:
134
+
135
+ | Feature | Default Value |
136
+ | -------------------- | ------------------------------- |
137
+ | isSkipQuiz | true |
138
+ | showThumbnails | true |
139
+ | autoDetectThumbnail | true |
140
+ | volume | 100% |
141
+ | muted | false |
142
+ | allowAnalytics | false |
143
+ | allowPiP | false |
144
+ | rewindBy | 3 |
145
+ | clip | false |
146
+ | loop | false |
147
+ | trackUserPreferences | false |
148
+ | playbackRates | { min: 0.5, max: 2, step: 0.1 } |
149
+ | explanation_start | 0 |
150
+ | captions | true |
119
151
 
120
152
  ### posterProps (object)
121
153
 
122
- - `src` (string): Poster image URL
123
- - `alt` (string): Alt text
124
- - `crossOrigin` (boolean): Set crossorigin attribute
154
+ - `src` (string): Poster image URL
155
+ - `alt` (string): Alt text
156
+ - `crossOrigin` (boolean): Set crossorigin attribute
125
157
 
126
158
  ### subtitleTracks / chapterTracks (array)
127
159
 
@@ -141,30 +173,31 @@ See [`examples/React/src/App.js`](examples/React/src/App.js) or [`examples/Javas
141
173
 
142
174
  ### videoLayoutProps (object)
143
175
 
144
- - `thumbnails` (object): Thumbnail visibillity & VTT file URL for thumbnails
145
- - `playbackRates` (object): `{ min, max, step }` for playback speed
146
- `handouts` (array): Downloadable handout objects (`{ language, title, url }`)
147
- `quizzes` (array): Quiz objects (see [`examples/React/src/App.js`](examples/React/src/App.js))
148
- - `isSkipQuiz` (boolean): Enable/disable quiz skipping
149
- **Order in which factors are affecting visibility of quiz** - 1. mediaPlayerProps.trackUserPreferences if this flag is true, then isSkipQuiz value in 'custom-pref-storage' localstorage 2. videoLayoutProps.isSkipQuiz 3. default is true (i.e Quiz will not be visible)
150
- - `isPseudoFullscreen` (boolean): iOS fullscreen workaround
151
- - `toggleSkipQuiz`, `toggleIphoneFullScreen`, `toggleInfo` (function): UI toggles
152
- - `isQuizOpen`, `isInfoOpen` (boolean): UI state
153
- - `chapterTracks`, `subtitleTracks` (array): Track arrays (see above)
154
- - `windowProps` (object): Window size/orientation
155
- - `translations` (object): UI translations
156
- - `infoLink` (string): The link (image or video) to player information (e.g. instructions to use player)
157
- - `ecgLinks` (string or array): Array of an ECG image links or url of single ECG image link
158
- - `ecgNotes` (object): `{ title, content }` for ECG Notes
159
- - `allowPiP` (boolean): Enable/disable availability of PIP feature
160
- - `allowAnalytics` (boolean): Enable/disable Analytics to track user interaction with the video player by using Amplitude
161
- - `amplitudeApiKey` (string): API key for Amplitude
176
+ - `thumbnails` (object): Thumbnail visibillity & VTT file URL for thumbnails
177
+ - `playbackRates` (object): `{ min, max, step }` for playback speed
178
+ `handouts` (array): Downloadable handout objects (`{ language, title, url }`)
179
+ `quizzes` (array): Quiz objects (see [`examples/React/src/App.js`](examples/React/src/App.js))
180
+ - `isSkipQuiz` (boolean): Enable/disable quiz skipping
181
+ **Order in which factors are affecting visibility of quiz** - 1. mediaPlayerProps.trackUserPreferences if this flag is true, then isSkipQuiz value in 'custom-pref-storage' localstorage 2. videoLayoutProps.isSkipQuiz 3. default is true (i.e Quiz will not be visible)
182
+ - `isPseudoFullscreen` (boolean): iOS fullscreen workaround
183
+ - `toggleSkipQuiz`, `toggleIphoneFullScreen`, `toggleInfo` (function): UI toggles
184
+ - `isQuizOpen`, `isInfoOpen` (boolean): UI state
185
+ - `chapterTracks`, `subtitleTracks` (array): Track arrays (see above)
186
+ - `windowProps` (object): Window size/orientation
187
+ - `translations` (object): UI translations
188
+ - `infoLink` (string): The link (image or video) to player information (e.g. instructions to use player)
189
+ - `ecgLinks` (string or array): Array of an ECG image links or url of single ECG image link
190
+ - `ecgNotes` (object): `{ title, content }` for ECG Notes
191
+ - `allowPiP` (boolean): Enable/disable availability of PIP feature
192
+ - `allowAnalytics` (boolean): Enable/disable Analytics to track user interaction with the video player by using Amplitude
193
+ - `amplitudeApiKey` (string): API key for Amplitude
162
194
 
163
195
  ### thumbnails (object)
164
196
 
165
- - `showThumbnails` (boolean): Enable/disable visibility of thumbnails over seek bar (default_value: true)
166
- - `customUrl` (string): VTT file URL
167
- - `autoDetectThumbnail` (boolean): Enable/disable feature of searching for VTT file in the same folder the video is present. (eg. video URL: https://storage.googleapis.com/muxdemofiles/mux.mp4, thumbnail URL: https://storage.googleapis.com/muxdemofiles/thumbnail/mux.vtt) (default_value: true)
197
+ - `showThumbnails` (boolean): Enable/disable visibility of thumbnails over seek bar (default_value: true)
198
+ - `customUrl` (string): VTT file URL
199
+ - `autoDetectThumbnail` (boolean): Enable/disable feature of searching for VTT file in the same folder the video is present. (eg. video URL: https://storage.googleapis.com/muxdemofiles/mux.mp4, thumbnail URL: https://storage.googleapis.com/muxdemofiles/thumbnail/mux.vtt) (default_value: true)
200
+ For this prop to work, It needs thumbnail vtt URL to be publically available.
168
201
 
169
202
  ### audioLayoutProps (object)
170
203
 
@@ -228,21 +261,21 @@ See [examples/React/src/App.js](https://github.com/close2realtraining/ekg-video-
228
261
 
229
262
  ### Amplitude for Product Analytics
230
263
 
231
- - `cc_text_toggled` (boolean): tracks whether closed captions (CC) are toggled on or off.
232
- - `thumbnail_toggled` (boolean): tracks whether the thumbnail preview is toggled on or off.
233
- - `info_popup_toggled` (boolean): tracks whether the info popup is opened or closed.
234
- - `in_vid_quiz_toggled` (boolean): tracks whether in-video quizzes are toggled on or off.
235
- - `ecg_popup_toggled` (boolean): tracks whether the ECG popup is opened or closed.
236
- - `ecg_notes_toggled` (boolean): tracks whether ECG notes visibility is toggled on or off.
237
- - `chapter_popup_toggled` (boolean): tracks whether the chapter popup is opened or closed.
238
- - `chapter_changed` (string): tracks the name of the chapter the user switched to.
239
- - `pip_mode_toggled` (boolean): tracks whether Picture-in-Picture (PiP) mode is toggled on or off.
240
- - `fullscreen_mode_toggled` (boolean): tracks whether fullscreen mode is toggled on or off.
241
- - `handout_popup_toggled` (boolean): tracks whether the handout popup is opened or closed.
242
- - `handout_file` (string): tracks which handout file the user clicked.
243
- - `settings_popup_toggled` (boolean): tracks whether the settings popup is opened or closed.
244
- - `playback_speed_changed` (number): tracks the playback speed chosen by the user.
245
- - `volume_level_changed` (number): tracks the volume level set by the user.
264
+ - `cc_text_toggled` (boolean): tracks whether closed captions (CC) are toggled on or off.
265
+ - `thumbnail_toggled` (boolean): tracks whether the thumbnail preview is toggled on or off.
266
+ - `info_popup_toggled` (boolean): tracks whether the info popup is opened or closed.
267
+ - `in_vid_quiz_toggled` (boolean): tracks whether in-video quizzes are toggled on or off.
268
+ - `ecg_popup_toggled` (boolean): tracks whether the ECG popup is opened or closed.
269
+ - `ecg_notes_toggled` (boolean): tracks whether ECG notes visibility is toggled on or off.
270
+ - `chapter_popup_toggled` (boolean): tracks whether the chapter popup is opened or closed.
271
+ - `chapter_changed` (string): tracks the name of the chapter the user switched to.
272
+ - `pip_mode_toggled` (boolean): tracks whether Picture-in-Picture (PiP) mode is toggled on or off.
273
+ - `fullscreen_mode_toggled` (boolean): tracks whether fullscreen mode is toggled on or off.
274
+ - `handout_popup_toggled` (boolean): tracks whether the handout popup is opened or closed.
275
+ - `handout_file` (string): tracks which handout file the user clicked.
276
+ - `settings_popup_toggled` (boolean): tracks whether the settings popup is opened or closed.
277
+ - `playback_speed_changed` (number): tracks the playback speed chosen by the user.
278
+ - `volume_level_changed` (number): tracks the volume level set by the user.
246
279
 
247
280
  ### ecgNotes (object)
248
281
 
@@ -252,12 +285,12 @@ The `ecgNotes.content` field supports a dynamic JSON structure used by **Content
252
285
 
253
286
  Example supported keys inside `content`:
254
287
 
255
- - **text**: WhatsApp-style rich text (`*bold*`, `_italic_`, `~strike~`, code blocks, links, `
288
+ - **text**: WhatsApp-style rich text (`*bold*`, `_italic_`, `~strike~`, code blocks, links, `
256
289
  `, ` `)
257
- - **html**: Raw HTML rendered using `dangerouslySetInnerHTML`
258
- - **tabs**: Array of tab objects (`{ id, label, content }`)
259
- - **accordion**: Accordion sections (`{ head, content }`)
260
- - **content**: Nested container enabling recursive structure (content → tabs → accordion → content → …)
290
+ - **html**: Raw HTML rendered using `dangerouslySetInnerHTML`
291
+ - **tabs**: Array of tab objects (`{ id, label, content }`)
292
+ - **accordion**: Accordion sections (`{ head, content }`)
293
+ - **content**: Nested container enabling recursive structure (content → tabs → accordion → content → …)
261
294
 
262
295
  Example:
263
296
 
@@ -338,8 +371,8 @@ Line 2
338
371
 
339
372
  ## Documentation & Examples
340
373
 
341
- - See [GitHub repository](https://github.com/close2realtraining/ekg-video-player) for full documentation, advanced usage, and examples.
342
- - Example configs: `examples/React/src/App.js`, `examples/Javascript/main.js`
374
+ - See [GitHub repository](https://github.com/close2realtraining/ekg-video-player) for full documentation, advanced usage, and examples.
375
+ - Example configs: `examples/React/src/App.js`, `examples/Javascript/main.js`
343
376
 
344
377
  ## License
345
378
 
@@ -98,6 +98,56 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
98
98
  SOFTWARE.
99
99
 
100
100
 
101
+ @amplitude/plugin-custom-enrichment-browser
102
+ MIT
103
+ MIT License
104
+
105
+ Copyright (c) 2022 Amplitude Analytics
106
+
107
+ Permission is hereby granted, free of charge, to any person obtaining a copy
108
+ of this software and associated documentation files (the "Software"), to deal
109
+ in the Software without restriction, including without limitation the rights
110
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
111
+ copies of the Software, and to permit persons to whom the Software is
112
+ furnished to do so, subject to the following conditions:
113
+
114
+ The above copyright notice and this permission notice shall be included in all
115
+ copies or substantial portions of the Software.
116
+
117
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
118
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
119
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
120
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
121
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
122
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
123
+ SOFTWARE.
124
+
125
+
126
+ @amplitude/plugin-event-property-attribution-browser
127
+ MIT
128
+ MIT License
129
+
130
+ Copyright (c) 2022 Amplitude Analytics
131
+
132
+ Permission is hereby granted, free of charge, to any person obtaining a copy
133
+ of this software and associated documentation files (the "Software"), to deal
134
+ in the Software without restriction, including without limitation the rights
135
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
136
+ copies of the Software, and to permit persons to whom the Software is
137
+ furnished to do so, subject to the following conditions:
138
+
139
+ The above copyright notice and this permission notice shall be included in all
140
+ copies or substantial portions of the Software.
141
+
142
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
143
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
144
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
145
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
146
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
147
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
148
+ SOFTWARE.
149
+
150
+
101
151
  @amplitude/plugin-network-capture-browser
102
152
  MIT
103
153
  MIT License
@@ -425,6 +475,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
425
475
  SOFTWARE.
426
476
 
427
477
 
478
+ safe-json-stringify
479
+ MIT
480
+
428
481
  scheduler
429
482
  MIT
430
483
  MIT License
@@ -474,18 +527,16 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
474
527
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
475
528
 
476
529
 
477
- zen-observable-ts
530
+ zen-observable
478
531
  MIT
479
- The MIT License (MIT)
480
-
481
- Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.)
532
+ Copyright (c) 2018 zenparsing (Kevin Smith)
482
533
 
483
534
  Permission is hereby granted, free of charge, to any person obtaining a copy
484
535
  of this software and associated documentation files (the "Software"), to deal
485
- in the Software without restriction, including without limitation the rights
486
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
487
- copies of the Software, and to permit persons to whom the Software is
488
- furnished to do so, subject to the following conditions:
536
+ in the Software without restriction, including without limitation the rights to
537
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
538
+ of the Software, and to permit persons to whom the Software is furnished to do
539
+ so, subject to the following conditions:
489
540
 
490
541
  The above copyright notice and this permission notice shall be included in all
491
542
  copies or substantial portions of the Software.
@@ -493,7 +544,6 @@ copies or substantial portions of the Software.
493
544
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
494
545
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
495
546
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
496
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
497
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
498
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
499
- SOFTWARE.
547
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
548
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
549
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.