PageSourceSearch

https://www.surgeons.org/-/media/Base-Themes/Core-Libraries/script…&hash=69245E56974C886B5D18279CC67F1A82

js surgeons.org collected 2026-09-24 17:09:31 UTC 8,199 bytes, 306 lines download raw bytes

vendor: 8,199 bytes, lines 1-306
1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
12'use strict';
13
14var SoundCloudApi = {
15
16	promise: null,
17
18	load: function load(settings) {
19
20		if (typeof SC !== 'undefined') {
21			SoundCloudApi._createPlayer(settings);
22		} else {
23			SoundCloudApi.promise = SoundCloudApi.promise || mejs.Utils.loadScript('https://w.soundcloud.com/player/api.js');
24			SoundCloudApi.promise.then(function () {
25				SoundCloudApi._createPlayer(settings);
26			});
27		}
28	},
29
30	_createPlayer: function _createPlayer(settings) {
31		var player = SC.Widget(settings.iframe);
32		window['__ready__' + settings.id](player);
33	}
34};
35
36var SoundCloudIframeRenderer = {
37	name: 'soundcloud_iframe',
38	options: {
39		prefix: 'soundcloud_iframe'
40	},
41
42	canPlayType: function canPlayType(type) {
43		return ~['video/soundcloud', 'video/x-soundcloud'].indexOf(type.toLowerCase());
44	},
45
46	create: function create(mediaElement, options, mediaFiles) {
47		var sc = {},
48		    apiStack = [],
49		    readyState = 4,
50		    autoplay = mediaElement.originalNode.autoplay;
51
52		var duration = 0,
53		    currentTime = 0,
54		    bufferedTime = 0,
55		    volume = 1,
56		    muted = false,
57		    paused = true,
58		    ended = false,
59		    scPlayer = null,
60		    scIframe = null;
61
62		sc.options = options;
63		sc.id = mediaElement.id + '_' + options.prefix;
64		sc.mediaElement = mediaElement;
65
66		var props = mejs.html5media.properties,
67		    assignGettersSetters = function assignGettersSetters(propName) {
68			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
69
70			sc['get' + capName] = function () {
71				if (scPlayer !== null) {
72					var value = null;
73
74					switch (propName) {
75						case 'currentTime':
76							return currentTime;
77						case 'duration':
78							return duration;
79						case 'volume':
80							return volume;
81						case 'paused':
82							return paused;
83						case 'ended':
84							return ended;
85						case 'muted':
86							return muted;
87						case 'buffered':
88							return {
89								start: function start() {
90									return 0;
91								},
92								end: function end() {
93									return bufferedTime * duration;
94								},
95								length: 1
96							};
97						case 'src':
98							return scIframe ? scIframe.src : '';
99						case 'readyState':
100							return readyState;
101					}
102					return value;
103				} else {
104					return null;
105				}
106			};
107
108			sc['set' + capName] = function (value) {
109				if (scPlayer !== null) {
110					switch (propName) {
111						case 'src':
112							var url = typeof value === 'string' ? value : value[0].src;
113							scPlayer.load(url);
114							if (autoplay) {
115								scPlayer.play();
116							}
117							break;
118						case 'currentTime':
119							scPlayer.seekTo(value * 1000);
120							break;
121						case 'muted':
122							if (value) {
123								scPlayer.setVolume(0);
124							} else {
125								scPlayer.setVolume(1);
126							}
127							setTimeout(function () {
128								var event = mejs.Utils.createEvent('volumechange', sc);
129								mediaElement.dispatchEvent(event);
130							}, 50);
131							break;
132						case 'volume':
133							scPlayer.setVolume(value);
134							setTimeout(function () {
135								var event = mejs.Utils.createEvent('volumechange', sc);
136								mediaElement.dispatchEvent(event);
137							}, 50);
138							break;
139						case 'readyState':
140							var event = mejs.Utils.createEvent('canplay', sc);
141							mediaElement.dispatchEvent(event);
142							break;
143
144						default:
145							
146							break;
147					}
148				} else {
149					apiStack.push({ type: 'set', propName: propName, value: value });
150				}
151			};
152		};
153
154		for (var i = 0, total = props.length; i < total; i++) {
155			assignGettersSetters(props[i]);
156		}
157
158		var methods = mejs.html5media.methods,
159		    assignMethods = function assignMethods(methodName) {
160			sc[methodName] = function () {
161				if (scPlayer !== null) {
162					switch (methodName) {
163						case 'play':
164							return scPlayer.play();
165						case 'pause':
166							return scPlayer.pause();
167						case 'load':
168							return null;
169					}
170				} else {
171					apiStack.push({ type: 'call', methodName: methodName });
172				}
173			};
174		};
175
176		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
177			assignMethods(methods[_i]);
178		}
179
180		window['__ready__' + sc.id] = function (_scPlayer) {
181
182			mediaElement.scPlayer = scPlayer = _scPlayer;
183
184			if (autoplay) {
185				scPlayer.play();
186			}
187
188			if (apiStack.length) {
189				for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
190
191					var stackItem = apiStack[_i2];
192
193					if (stackItem.type === 'set') {
194						var propName = stackItem.propName,
195						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
196
197						sc['set' + capName](stackItem.value);
198					} else if (stackItem.type === 'call') {
199						sc[stackItem.methodName]();
200					}
201				}
202			}
203
204			scPlayer.bind(SC.Widget.Events.PLAY_PROGRESS, function () {
205				paused = false;
206				ended = false;
207				scPlayer.getPosition(function (_currentTime) {
208					currentTime = _currentTime / 1000;
209					var event = mejs.Utils.createEvent('timeupdate', sc);
210					mediaElement.dispatchEvent(event);
211				});
212			});
213			scPlayer.bind(SC.Widget.Events.PAUSE, function () {
214				paused = true;
215				var event = mejs.Utils.createEvent('pause', sc);
216				mediaElement.dispatchEvent(event);
217			});
218			scPlayer.bind(SC.Widget.Events.PLAY, function () {
219				paused = false;
220				ended = false;
221				var event = mejs.Utils.createEvent('play', sc);
222				mediaElement.dispatchEvent(event);
223			});
224			scPlayer.bind(SC.Widget.Events.FINISHED, function () {
225				paused = false;
226				ended = true;
227				var event = mejs.Utils.createEvent('ended', sc);
228				mediaElement.dispatchEvent(event);
229			});
230			scPlayer.bind(SC.Widget.Events.READY, function () {
231				scPlayer.getDuration(function (_duration) {
232					duration = _duration / 1000;
233					var event = mejs.Utils.createEvent('loadedmetadata', sc);
234					mediaElement.dispatchEvent(event);
235				});
236			});
237			scPlayer.bind(SC.Widget.Events.LOAD_PROGRESS, function () {
238				scPlayer.getDuration(function (loadProgress) {
239					if (duration > 0) {
240						bufferedTime = duration * loadProgress;
241						var event = mejs.Utils.createEvent('progress', sc);
242						mediaElement.dispatchEvent(event);
243					}
244				});
245				scPlayer.getDuration(function (_duration) {
246					duration = _duration;
247
248					var event = mejs.Utils.createEvent('loadedmetadata', sc);
249					mediaElement.dispatchEvent(event);
250				});
251			});
252
253			var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
254			for (var _i3 = 0, _total3 = initEvents.length; _i3 < _total3; _i3++) {
255				var event = mejs.Utils.createEvent(initEvents[_i3], sc);
256				mediaElement.dispatchEvent(event);
257			}
258		};
259
260		scIframe = document.createElement('iframe');
261		scIframe.id = sc.id;
262		scIframe.width = 10;
263		scIframe.height = 10;
264		scIframe.frameBorder = 0;
265		scIframe.style.visibility = 'hidden';
266		scIframe.src = mediaFiles[0].src;
267		scIframe.scrolling = 'no';
268
269		mediaElement.appendChild(scIframe);
270		mediaElement.originalNode.style.display = 'none';
271
272		var scSettings = {
273			iframe: scIframe,
274			id: sc.id
275		};
276
277		SoundCloudApi.load(scSettings);
278
279		sc.setSize = function () {};
280		sc.hide = function () {
281			sc.pause();
282			if (scIframe) {
283				scIframe.style.display = 'none';
284			}
285		};
286		sc.show = function () {
287			if (scIframe) {
288				scIframe.style.display = '';
289			}
290		};
291		sc.destroy = function () {
292			scPlayer.destroy();
293		};
294
295		return sc;
296	}
297};
298
299mejs.Utils.typeChecks.push(function (url) {
300	return (/\/\/(w\.)?soundcloud.com/i.test(url) ? 'video/x-soundcloud' : null
301	);
302});
303
304mejs.Renderers.add(SoundCloudIframeRenderer);
305
306},{}]},{},[1]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.