cloudinary-video-player 3.13.1 → 3.13.2-edge.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.
Files changed (73) hide show
  1. package/dist/134.min.js +4 -4
  2. package/dist/309.min.js +3 -3
  3. package/dist/350.min.js +6 -0
  4. package/dist/689.min.js +6 -0
  5. package/dist/adaptive-streaming.js +2 -2
  6. package/dist/adaptive-streaming.min.js +2 -2
  7. package/dist/chapters.js +2 -2
  8. package/dist/chapters.min.js +2 -2
  9. package/dist/cld-player-core.js +2 -2
  10. package/dist/cld-player-core.min.js +2 -2
  11. package/dist/cld-poster-url.js +57 -0
  12. package/dist/cld-poster-url.min.js +6 -0
  13. package/dist/cld-video-player-lazy.js +10 -66
  14. package/dist/cld-video-player-lazy.min.js +3 -3
  15. package/dist/cld-video-player.css +6 -2
  16. package/dist/cld-video-player.js +35 -45
  17. package/dist/cld-video-player.light.js +35 -45
  18. package/dist/cld-video-player.light.min.js +4 -4
  19. package/dist/cld-video-player.min.css +3 -3
  20. package/dist/cld-video-player.min.js +4 -4
  21. package/dist/colors.js +2 -2
  22. package/dist/colors.min.js +2 -2
  23. package/dist/dash.js +2 -2
  24. package/dist/dash.min.js +2 -2
  25. package/dist/debug.js +3 -3
  26. package/dist/debug.min.js +3 -3
  27. package/dist/ima.js +2 -2
  28. package/dist/ima.min.js +2 -2
  29. package/dist/interaction-areas.js +2 -2
  30. package/dist/interaction-areas.min.js +2 -2
  31. package/dist/node_modules_lodash_throttle_js.js +2 -2
  32. package/dist/playlist.js +2 -2
  33. package/dist/playlist.min.js +2 -2
  34. package/dist/{plugins_cloudinary_url-helpers_js-utils_object_js-utils_querystring_js-utils_utf8Base64_js-vi-555007.js → plugins_cloudinary_url-helpers_js-utils_cloudinary-config-from-options_js-utils_querystring_j-adfe37.js} +48 -4
  35. package/dist/recommendations-overlay.js +2 -2
  36. package/dist/recommendations-overlay.min.js +2 -2
  37. package/dist/schema.json +16 -0
  38. package/dist/share.js +2 -2
  39. package/dist/share.min.js +2 -2
  40. package/dist/shoppable.js +2 -2
  41. package/dist/shoppable.min.js +2 -2
  42. package/dist/utils_fetch-config_js.js +3 -3
  43. package/dist/utils_schedule_js.js +27 -0
  44. package/dist/video-player_js.js +11 -11
  45. package/dist/visual-search.js +2 -2
  46. package/dist/visual-search.min.js +2 -2
  47. package/lib/all.js +3 -2
  48. package/lib/chapters.js +2 -2
  49. package/lib/cld-video-player.min.css +3 -3
  50. package/lib/{object.js → cloudinary-config-from-options.js} +10 -2
  51. package/lib/cloudinary-url-prefix.js +91 -0
  52. package/lib/colors.js +2 -2
  53. package/lib/config/configSchema.json +16 -0
  54. package/lib/debug.js +1 -0
  55. package/lib/fetch-config.js +4 -11
  56. package/lib/index.js +3 -2
  57. package/lib/interaction-areas.service.js +2 -2
  58. package/lib/lazy.js +0 -1
  59. package/lib/player-api.js +171 -413
  60. package/lib/player.js +2 -1
  61. package/lib/playlist.js +2 -2
  62. package/lib/poster-url.js +46 -0
  63. package/lib/recommendations-overlay.js +2 -2
  64. package/lib/schedule.js +153 -0
  65. package/lib/share.js +2 -2
  66. package/lib/shoppable-widget.js +2 -2
  67. package/lib/toNumber.js +1 -1
  68. package/lib/video-player.const.js +1 -1
  69. package/lib/video-player.js +25 -11
  70. package/lib/videoPlayer.js +2 -1
  71. package/package.json +1 -1
  72. package/types/cld-video-player.d.ts +6 -0
  73. package/dist/19.min.js +0 -6
@@ -1,10 +1,10 @@
1
1
  import { _ as _vjs } from './_videojs-proxy.js';
2
2
  import { f as componentUtils } from './video-player.js';
3
3
  import './_commonjsHelpers.js';
4
- import './object.js';
4
+ import './cloudinary-config-from-options.js';
5
5
  import './video-player.const.js';
6
6
  import './validators-functions.js';
7
- import './player-api.js';
7
+ import './cloudinary-url-prefix.js';
8
8
 
9
9
  const ClickableComponent$1 = _vjs.getComponent('ClickableComponent');
10
10
  class RecommendationsOverlayItem extends ClickableComponent$1 {
@@ -0,0 +1,153 @@
1
+ import { g as getVideoElement, p as preparePlayerPlaceholder, l as loadPlayer } from './player-api.js';
2
+
3
+ /**
4
+ * Schedule utilities: weekly time-range parsing and bootstrap.
5
+ * Outside-schedule bootstrap reuses lazy placeholder DOM + deferred load helpers.
6
+ * Uses browser local time. No videojs dependency for the bootstrap path.
7
+ */
8
+ const INTERNAL_ANALYTICS_URL = 'https://analytics-api-s.cloudinary.com';
9
+ const sendScheduleImageAnalytics = options => {
10
+ const allowReport = options?.sourceOptions?.allowUsageReport ?? options?.allowUsageReport;
11
+ if (allowReport === false) return;
12
+ try {
13
+ const params = new URLSearchParams({
14
+ scheduleImageRendered: 'true',
15
+ cloudName: options?.cloudName || options?.cloudinaryConfig?.cloud_name || ''
16
+ }).toString();
17
+ fetch(`${INTERNAL_ANALYTICS_URL}/video_player_source?${params}`);
18
+ } catch {
19
+ // noop
20
+ }
21
+ };
22
+ const getCloudNameFromOptions = options => options?.cloudName || options?.cloud_name || options?.cloudinaryConfig?.cloud_name;
23
+ const getPublicIdFromOptions = options => options?.publicId || options?.sourceOptions?.publicId;
24
+
25
+ /**
26
+ * Returns true when schedule.weekly is configured and current time is outside the schedule.
27
+ * @param {object} options - player options
28
+ * @returns {boolean}
29
+ */
30
+ const shouldUseScheduleBootstrap = options => {
31
+ const schedule = options?.schedule;
32
+ const weekly = schedule?.weekly;
33
+ return Array.isArray(weekly) && weekly.length > 0 && !isWithinSchedule(schedule, new Date());
34
+ };
35
+
36
+ /**
37
+ * Bootstrap path when outside schedule: render poster, return stub with loadPlayer().
38
+ * @param {string|HTMLElement} elem - Element id or video element
39
+ * @param {object} options - player options
40
+ * @param {function} [ready] - Video.js ready callback (passed when full player loads)
41
+ * @returns {object} Stub with source() and loadPlayer()
42
+ */
43
+ const scheduleBootstrap = async (elem, options, ready) => {
44
+ const videoElement = getVideoElement(elem);
45
+ const cloudName = getCloudNameFromOptions(options);
46
+ const publicId = getPublicIdFromOptions(options);
47
+ if (!cloudName || !publicId) {
48
+ throw new Error('schedule.weekly requires cloudName and publicId when outside schedule');
49
+ }
50
+ const {
51
+ buildPosterUrl
52
+ } = await import('./poster-url.js');
53
+ const cloudinaryConfig = options?.cloudinaryConfig || {
54
+ cloud_name: cloudName
55
+ };
56
+ const posterUrl = buildPosterUrl(cloudName, publicId, cloudinaryConfig);
57
+ const fluid = options?.fluid !== false;
58
+ const {
59
+ videoElement: vEl,
60
+ hadControls
61
+ } = preparePlayerPlaceholder(videoElement, posterUrl, {
62
+ fluid,
63
+ width: options?.width,
64
+ height: options?.height,
65
+ cropMode: options?.sourceOptions?.cropMode,
66
+ sourceOptions: options?.sourceOptions,
67
+ aspectRatio: options?.aspectRatio
68
+ });
69
+ sendScheduleImageAnalytics(options);
70
+ const stub = {
71
+ source: () => stub,
72
+ loadPlayer: () => {
73
+ if (hadControls) vEl.setAttribute('controls', '');
74
+ return loadPlayer({
75
+ videoElement: vEl,
76
+ options,
77
+ ready
78
+ });
79
+ }
80
+ };
81
+ return stub;
82
+ };
83
+ const DAY_MAP = {
84
+ sunday: 0,
85
+ sun: 0,
86
+ monday: 1,
87
+ mon: 1,
88
+ tuesday: 2,
89
+ tue: 2,
90
+ tues: 2,
91
+ wednesday: 3,
92
+ wed: 3,
93
+ thursday: 4,
94
+ thu: 4,
95
+ thur: 4,
96
+ thurs: 4,
97
+ friday: 5,
98
+ fri: 5,
99
+ saturday: 6,
100
+ sat: 6
101
+ };
102
+
103
+ /**
104
+ * Parse readable day-of-week string to JS Date.getDay() value (0=Sun .. 6=Sat).
105
+ * @param {string} day - Full or abbreviated day name (case-insensitive)
106
+ * @returns {number|null} 0-6, or null if invalid
107
+ */
108
+ const parseDay = day => {
109
+ if (typeof day !== 'string') return null;
110
+ const key = day.toLowerCase().trim();
111
+ return DAY_MAP[key] ?? null;
112
+ };
113
+
114
+ /**
115
+ * Parse "HH:mm" string to minutes since midnight.
116
+ * @param {string} timeStr - "09:00" or "17:30"
117
+ * @returns {number|null} minutes, or null if invalid
118
+ */
119
+ const parseTime = timeStr => {
120
+ if (typeof timeStr !== 'string') return null;
121
+ const match = timeStr.trim().match(/^(\d{1,2}):(\d{2})$/);
122
+ if (!match) return null;
123
+ const h = parseInt(match[1], 10);
124
+ const m = parseInt(match[2], 10);
125
+ if (h < 0 || h > 23 || m < 0 || m > 59) return null;
126
+ return h * 60 + m;
127
+ };
128
+
129
+ /**
130
+ * Check if a date falls within any configured weekly slot (local time).
131
+ * @param {{ weekly?: Array<{ day: string, start: string, duration: number }> }} schedule - schedule config
132
+ * @param {Date} date - date to check (uses local time)
133
+ * @returns {boolean} true if within a slot
134
+ */
135
+ const isWithinSchedule = (schedule, date) => {
136
+ const weekly = schedule?.weekly;
137
+ if (!Array.isArray(weekly) || weekly.length === 0) return true;
138
+ const WEEK = 7 * 1440;
139
+ const nowInWeek = date.getDay() * 1440 + date.getHours() * 60 + date.getMinutes();
140
+ for (const slot of weekly) {
141
+ const slotDay = parseDay(slot.day);
142
+ if (slotDay === null) continue;
143
+ const startMin = parseTime(slot.start);
144
+ if (startMin === null || typeof slot.duration !== 'number' || slot.duration <= 0) continue;
145
+ const slotStart = slotDay * 1440 + startMin;
146
+ const durationMin = slot.duration * 60;
147
+ const elapsed = (nowInWeek - slotStart + WEEK) % WEEK;
148
+ if (elapsed < durationMin) return true;
149
+ }
150
+ return false;
151
+ };
152
+
153
+ export { getVideoElement as getElementForSchedule, isWithinSchedule, parseDay, preparePlayerPlaceholder as renderScheduleImage, scheduleBootstrap, shouldUseScheduleBootstrap };
package/lib/share.js CHANGED
@@ -2,10 +2,10 @@ import './download-button.js';
2
2
  import { g as getCloudinaryUrl, o as omit } from './video-player.js';
3
3
  import './_videojs-proxy.js';
4
4
  import './_commonjsHelpers.js';
5
- import './object.js';
5
+ import './cloudinary-config-from-options.js';
6
6
  import './video-player.const.js';
7
7
  import './validators-functions.js';
8
- import './player-api.js';
8
+ import './cloudinary-url-prefix.js';
9
9
 
10
10
  const SharePlugin = function () {
11
11
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -5,9 +5,9 @@ import './_commonjsHelpers.js';
5
5
  import './throttle.js';
6
6
  import './video-player.const.js';
7
7
  import './toNumber.js';
8
- import './object.js';
8
+ import './cloudinary-config-from-options.js';
9
9
  import './validators-functions.js';
10
- import './player-api.js';
10
+ import './cloudinary-url-prefix.js';
11
11
 
12
12
  class ShoppableWidget {
13
13
  constructor(player) {
package/lib/toNumber.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { r as requireIsObject } from './video-player.const.js';
2
- import { r as requireIsSymbol } from './object.js';
2
+ import { r as requireIsSymbol } from './cloudinary-config-from-options.js';
3
3
 
4
4
  /** Used to match a single whitespace character. */
5
5
 
@@ -337,7 +337,7 @@ function requireIsArray () {
337
337
  const SOURCE_PARAMS = ['adaptiveStreaming', 'allowUsageReport', 'aspectRatio', 'autoShowRecommendations', 'breakpoints', 'chapters', 'cropMode', 'cropPadColor', 'cloudinaryConfig', 'description', 'download', 'hdr', 'info', 'interactionAreas', 'maxDpr', 'poster', 'posterOptions', 'publicId', 'rawTransformation', 'recommendations', 'resourceType', 'shoppable', 'source', 'sourceTransformation', 'sourceTypes', 'textTracks', 'title', 'transformation', 'type', 'visualSearch', 'withCredentials', 'videoSources'];
338
338
 
339
339
  // All parameters that can be passed to player constructor
340
- const PLAYER_PARAMS = SOURCE_PARAMS.concat(['_internalAnalyticsMetadata', 'ads', 'aiHighlightsGraph', 'analytics', 'autoplayMode', 'chaptersButton', 'cloudinaryAnalytics', 'colors', 'debug', 'fetchErrorUsingGet', 'floatingWhenNotVisible', 'fluid', 'fontFace', 'hideContextMenu', 'ima', 'pictureInPictureToggle', 'playedEventPercents', 'playedEventTimes', 'playlistWidget', 'profile', 'qualitySelector', 'queryParams', 'seekThumbnails', 'showJumpControls', 'videoConfig', 'schedule']);
340
+ const PLAYER_PARAMS = SOURCE_PARAMS.concat(['_internalAnalyticsMetadata', 'ads', 'aiHighlightsGraph', 'analytics', 'autoplayMode', 'chaptersButton', 'cloudinaryAnalytics', 'colors', 'debug', 'fetchErrorUsingGet', 'floatingWhenNotVisible', 'fluid', 'fontFace', 'hideContextMenu', 'ima', 'pictureInPictureToggle', 'playedEventPercents', 'playedEventTimes', 'playlistWidget', 'profile', 'qualitySelector', 'queryParams', 'seekThumbnails', 'showJumpControls', 'videoConfig', 'schedule', 'lazy']);
341
341
 
342
342
  // We support both camelCase and snake_case for cloudinary SDK params
343
343
  const CLOUDINARY_CONFIG_PARAM = ['api_secret', 'auth_token', 'cdn_subdomain', 'cloud_name', 'cname', 'private_cdn', 'secure', 'secure_cdn_subdomain', 'secure_distribution', 'shorten', 'sign_url', 'url_suffix', 'use_root_path'];
@@ -1,9 +1,9 @@
1
1
  import { _ as _vjs } from './_videojs-proxy.js';
2
2
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers.js';
3
- import { b as require_getNative, d as require_Map, e as require_toSource, f as requireIsLength, g as requireIsArguments, h as require_baseGet, j as require_ListCache, k as require_MapCache, l as require_assignValue, m as require_baseAssignValue, n as require_isIndex, o as require_arrayPush, q as require_castPath, s as require_toKey, t as require_arrayMap, v as require_flatRest, a as appendQueryParams, u as utf8ToBase64, F as FORMAT_MAPPINGS, C as CONTAINER_MIME_TYPES, i as isRawUrl, V as VIDEO_SUFFIX_REMOVAL_PATTERN, D as DEFAULT_VIDEO_PARAMS, w as DEFAULT_POSTER_PARAMS$1, A as ADAPTIVE_SOURCETYPES, R as RENDITIONS, x as DEFAULT_DPR, y as requireToString, z as require_createCompounder, p as pick, c as convertKeysToSnakeCase } from './object.js';
3
+ import { b as require_getNative, c as require_Map, d as require_toSource, e as requireIsLength, f as requireIsArguments, h as require_baseGet, j as require_ListCache, k as require_MapCache, l as require_assignValue, m as require_baseAssignValue, n as require_isIndex, o as require_arrayPush, p as require_castPath, q as require_toKey, s as require_arrayMap, t as require_flatRest, a as appendQueryParams, u as utf8ToBase64, F as FORMAT_MAPPINGS, C as CONTAINER_MIME_TYPES, i as isRawUrl, V as VIDEO_SUFFIX_REMOVAL_PATTERN, D as DEFAULT_VIDEO_PARAMS, v as DEFAULT_POSTER_PARAMS$1, A as ADAPTIVE_SOURCETYPES, R as RENDITIONS, w as DEFAULT_DPR, x as requireToString, y as require_createCompounder, g as getCloudinaryConfigFromOptions, z as pick } from './cloudinary-config-from-options.js';
4
4
  import { a as require_root, c as require_baseGetTag, b as requireIsFunction, e as requireIsObjectLike, g as require_freeGlobal, d as requireIsArray, r as requireIsObject, f as require_Symbol, S as SOURCE_PARAMS, h as CROP_MODE, F as FLOATING_TO, P as PRELOAD, i as PLAYER_PARAMS, C as CLOUDINARY_CONFIG_PARAM, j as FLUID_CLASS_NAME, A as AUTO_PLAY_MODE } from './video-player.const.js';
5
5
  import { i as isObject$2, a as isString$1, b as isFunction$2, c as isValidPlayerConfig, d as isValidSourceConfig } from './validators-functions.js';
6
- import { L as LAYER_KEYWORD_PARAMS, b as LEGACY_CONDITIONAL_OPERATORS, d as LEGACY_PREDEFINED_VARS, O as OFFSET_ANY_PATTERN_RE, R as RANGE_VALUE_RE, u as unsigned_url_prefix, g as getCloudinaryUrlPrefix, e as cssEscape } from './player-api.js';
6
+ import { L as LAYER_KEYWORD_PARAMS, a as LEGACY_CONDITIONAL_OPERATORS, b as LEGACY_PREDEFINED_VARS, O as OFFSET_ANY_PATTERN_RE, R as RANGE_VALUE_RE, u as unsigned_url_prefix, g as getCloudinaryUrlPrefix } from './cloudinary-url-prefix.js';
7
7
 
8
8
  const byteToHex = [];
9
9
  for (let i = 0; i < 256; ++i) {
@@ -7281,7 +7281,7 @@ class TitleBar extends Component {
7281
7281
  const metadataUrl = appendQueryParams(`${urlPrefix}/_applet_/video_service/video_metadata/${deliveryType}/${utf8ToBase64(publicId)}.json`, source.queryParams());
7282
7282
  fetch(metadataUrl, {
7283
7283
  headers: {
7284
- 'X-Cld-Video-Player-Version': "3.13.1"
7284
+ 'X-Cld-Video-Player-Version': "3.13.2-edge.1"
7285
7285
  }
7286
7286
  }).then(response => {
7287
7287
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
@@ -9915,7 +9915,7 @@ class CloudinaryContext {
9915
9915
  hasUserPosterOptions: hasUserPosterOptions || null
9916
9916
  });
9917
9917
  options.queryParams = Object.assign(options.queryParams || {}, options.allowUsageReport ? {
9918
- _s: `vp-${"3.13.1"}`
9918
+ _s: `vp-${"3.13.2-edge.1"}`
9919
9919
  } : {});
9920
9920
  if (options.sourceTypes.indexOf('audio') > -1) {
9921
9921
  builtSrc = new AudioSource(publicId, options);
@@ -10069,6 +10069,9 @@ class CloudinaryContext {
10069
10069
  }
10070
10070
  return srcs;
10071
10071
  }, []);
10072
+ if (src.withCredentials) {
10073
+ this.player.crossOrigin('use-credentials');
10074
+ }
10072
10075
  this.player.src(_sources);
10073
10076
  _lastSource = src;
10074
10077
  if (this.playlist) {
@@ -10198,7 +10201,7 @@ class CloudinaryAnalytics {
10198
10201
  }, {
10199
10202
  ...(isPlainObject(this.analyticsOptions) ? this.analyticsOptions : {}),
10200
10203
  videoPlayerType: 'cloudinary video player',
10201
- videoPlayerVersion: "3.13.1"
10204
+ videoPlayerVersion: "3.13.2-edge.1"
10202
10205
  });
10203
10206
  } else if (this.currentVideoMetadata.cloudName !== metadata.cloudName || this.currentVideoMetadata.publicId !== metadata.publicId) {
10204
10207
  this.cloudinaryAnalytics.stopManualTracking();
@@ -10869,7 +10872,7 @@ const contextMenuContent = player => {
10869
10872
  const isFullscreen = player.isFullscreen();
10870
10873
  const aboutMenuItem = {
10871
10874
  class: 'player-version',
10872
- label: 'Cloudinary Player v' + "3.13.1"
10875
+ label: 'Cloudinary Player v' + "3.13.2-edge.1"
10873
10876
  };
10874
10877
  if (!player.controls()) {
10875
10878
  return [aboutMenuItem];
@@ -11655,7 +11658,8 @@ const fetchFileContent = async function (url) {
11655
11658
  signal,
11656
11659
  onSuccess,
11657
11660
  onError,
11658
- onAttempt
11661
+ onAttempt,
11662
+ credentials = 'omit'
11659
11663
  } = config;
11660
11664
  let attempts = 0;
11661
11665
  const attemptFetch = async () => {
@@ -11665,7 +11669,8 @@ const fetchFileContent = async function (url) {
11665
11669
  attempts++;
11666
11670
  onAttempt?.(attempts);
11667
11671
  const response = await fetch(url, {
11668
- signal
11672
+ signal,
11673
+ credentials
11669
11674
  });
11670
11675
  if (response.status === 202 && polling) {
11671
11676
  if (attempts < maxAttempts) {
@@ -11877,6 +11882,7 @@ function textTracksManager() {
11877
11882
  const sourceUrl = createSourceUrl();
11878
11883
  const response = await fetchFileContent(sourceUrl, {
11879
11884
  signal,
11885
+ credentials: player.cloudinary.source?.().withCredentials ? 'include' : 'omit',
11880
11886
  polling: type === 'transcript' && !src,
11881
11887
  interval: 2000,
11882
11888
  maxAttempts: 10,
@@ -12419,6 +12425,12 @@ const setupEventMethods = (player, videojsInstance) => {
12419
12425
  };
12420
12426
  };
12421
12427
 
12428
+ /*
12429
+ * Used to escape element identifiers that begin with certain
12430
+ * characters such as digits.
12431
+ * https://www.w3.org/International/questions/qa-escapes#css_identifiers
12432
+ */
12433
+
12422
12434
  const addMetadataTrack = (videoJs, vttSource) => {
12423
12435
  return videoJs.addRemoteTextTrack({
12424
12436
  kind: 'metadata',
@@ -12439,7 +12451,7 @@ const getResolveVideoElement = elem => {
12439
12451
  id = id.slice(1);
12440
12452
  }
12441
12453
  try {
12442
- elem = document.querySelector(`#${cssEscape(id)}`) || _vjs.getPlayer(id);
12454
+ elem = document.querySelector(`#${CSS.escape(id)}`) || _vjs.getPlayer(id);
12443
12455
  } catch (err) {
12444
12456
  // eslint-disable-line no-unused-vars
12445
12457
  elem = null;
@@ -12477,7 +12489,7 @@ const extractOptions = (elem, options) => {
12477
12489
 
12478
12490
  // Extract cloudinaryConfig from playerOptions if not explicitly provided
12479
12491
  if (!options.cloudinaryConfig) {
12480
- const snakeCaseCloudinaryConfig = pick(convertKeysToSnakeCase(options), CLOUDINARY_CONFIG_PARAM);
12492
+ const snakeCaseCloudinaryConfig = getCloudinaryConfigFromOptions(options);
12481
12493
  if (Object.keys(snakeCaseCloudinaryConfig).length > 0) {
12482
12494
  options.cloudinaryConfig = snakeCaseCloudinaryConfig;
12483
12495
  }
@@ -12682,6 +12694,8 @@ const getAnalyticsFromPlayerOptions = playerOptions => filterDefaultsAndNulls({
12682
12694
  debug: playerOptions.debug,
12683
12695
  type: playerOptions.type,
12684
12696
  schedule: hasConfig(playerOptions.schedule?.weekly),
12697
+ lazy: playerOptions.lazy === true || playerOptions.lazy && typeof playerOptions.lazy === 'object',
12698
+ lazyLoadOnScroll: playerOptions.lazy && typeof playerOptions.lazy === 'object' && playerOptions.lazy.loadOnScroll === true ? true : undefined,
12685
12699
  colors: hasConfig(playerOptions.colors),
12686
12700
  controlBar: hasConfig(playerOptions.controlBar),
12687
12701
  ...getSourceOptions(playerOptions.sourceOptions || {}),
@@ -12788,7 +12802,7 @@ class VideoPlayer {
12788
12802
  const analyticsData = getAnalyticsFromPlayerOptions(options);
12789
12803
  const analyticsParams = new URLSearchParams(analyticsData).toString();
12790
12804
  const baseParams = new URLSearchParams({
12791
- vpVersion: "3.13.1",
12805
+ vpVersion: "3.13.2-edge.1",
12792
12806
  vpInstanceId: this.getVPInstanceId(),
12793
12807
  cloudName: options.cloudinary.cloud_name,
12794
12808
  ...internalAnalyticsMetadata
@@ -2,7 +2,8 @@ export { videoPlayer as default } from './index.js';
2
2
  import './_videojs-proxy.js';
3
3
  import './_commonjsHelpers.js';
4
4
  import './video-player.js';
5
- import './object.js';
5
+ import './cloudinary-config-from-options.js';
6
6
  import './video-player.const.js';
7
7
  import './validators-functions.js';
8
+ import './cloudinary-url-prefix.js';
8
9
  import './player-api.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloudinary-video-player",
3
- "version": "3.13.1",
3
+ "version": "3.13.2-edge.1",
4
4
  "description": "Cloudinary Video Player",
5
5
  "author": "Cloudinary",
6
6
  "license": "MIT",
@@ -1,16 +1,22 @@
1
1
  type VideoPlayerFunction = (id: string, options?: any, ready?: () => void) => VideoPlayer;
2
2
  type VideoMultiPlayersFunction = (selector: string, options?: any, ready?: () => void) => VideoPlayer[];
3
3
  type VideoPlayerWithProfileFunction = (id: string, options?: any, ready?: () => void) => Promise<VideoPlayer>;
4
+ type AsyncPlayerFunction = (id: string, options?: any, ready?: () => void) => Promise<VideoPlayer | { source: () => unknown; loadPlayer: () => Promise<VideoPlayer> }>;
5
+ type AsyncPlayersFunction = (selector: string, options?: any, ready?: () => void) => Promise<VideoPlayer[]>;
4
6
 
5
7
  export const videoPlayer: VideoPlayerFunction;
6
8
  export const videoPlayers: VideoMultiPlayersFunction;
7
9
  export const videoPlayerWithProfile: VideoPlayerWithProfileFunction;
10
+ export const player: AsyncPlayerFunction;
11
+ export const players: AsyncPlayersFunction;
8
12
 
9
13
 
10
14
  export interface Cloudinary {
11
15
  videoPlayer: VideoPlayerFunction;
12
16
  videoPlayers: VideoMultiPlayersFunction;
13
17
  videoPlayerWithProfile: VideoPlayerWithProfileFunction;
18
+ player: AsyncPlayerFunction;
19
+ players: AsyncPlayersFunction;
14
20
  }
15
21
 
16
22
  declare global {
package/dist/19.min.js DELETED
@@ -1,6 +0,0 @@
1
- /*!
2
- * Cloudinary Video Player v3.13.1
3
- * Built on 2026-04-02T13:46:27.754Z
4
- * https://github.com/cloudinary/cloudinary-video-player
5
- */
6
- (self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[19],{5226(t,r,e){"use strict";e.d(r,{IH:()=>c,P8:()=>u,Tf:()=>o,VX:()=>p,XY:()=>i,cE:()=>a,o7:()=>f,uf:()=>s,vD:()=>n});const n={format:"jpg",resource_type:"video"},o={resource_type:"video",type:"upload",hdr:!1,transformation:[],sourceTransformation:{},sourceTypes:["auto"],recommendations:null,info:{},interactionAreas:{},chapters:{}},a=RegExp(`\\.(${["3g2","3gp","avi","flv","m3u8","ts","m2ts","mts","mov","mkv","mp4","mpeg","mpd","mxf","ogv","webm","wmv"].join("|")})$$`),u=RegExp("https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)"),i={hls:"application/x-mpegURL",dash:"application/dash+xml",opus:"video/ogg",ogv:"video/ogg",mp4:"video/mp4",mov:"video/mp4",m4v:"video/mp4",mkv:"video/x-matroska",m4a:"audio/mp4",mp3:"audio/mpeg",aac:"audio/aac",caf:"audio/x-caf",flac:"audio/flac",oga:"audio/ogg",wav:"audio/wav",m3u8:"application/x-mpegURL",mpd:"application/dash+xml",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",png:"image/png",svg:"image/svg+xml",webp:"image/webp"},s=["hls","dash","mpd","m3u8"],c={hls:"m3u8",dash:"mpd"},p=2,f=[640,848,1280,1920,2560,3840]},9897(t,r,e){"use strict";e.d(r,{i:()=>a,k:()=>o.k});var n=e(5226),o=e(1741);const a=t=>n.P8.test(t)},7155(t,r,e){"use strict";e.d(r,{d:()=>a});var n=e(5072),o=e.n(n);const a=t=>{let r={};for(const e of Object.keys(t)){r[o()(e)]=t[e]}return r}},7311(t,r,e){"use strict";e.d(r,{N:()=>n});const n=(t,r)=>{if(!r||!Object.keys(r).length)return t;const e=new URL(t);return Object.entries(r).forEach(t=>{let[r,n]=t;null!=n&&e.searchParams.append(r,n)}),e.href}},2415(t,r,e){"use strict";function n(t){const r=(new TextEncoder).encode(t),e=String.fromCharCode(...r);return btoa(e)}e.d(r,{G:()=>n})},608(t,r,e){"use strict";e.d(r,{Am:()=>p,HJ:()=>i,KE:()=>c,LU:()=>n,_V:()=>a,gi:()=>u,hN:()=>f,jK:()=>o,rT:()=>s});const n=["adaptiveStreaming","allowUsageReport","aspectRatio","autoShowRecommendations","breakpoints","chapters","cropMode","cropPadColor","cloudinaryConfig","description","download","hdr","info","interactionAreas","maxDpr","poster","posterOptions","publicId","rawTransformation","recommendations","resourceType","shoppable","source","sourceTransformation","sourceTypes","textTracks","title","transformation","type","visualSearch","withCredentials","videoSources"],o=n.concat(["_internalAnalyticsMetadata","ads","aiHighlightsGraph","analytics","autoplayMode","chaptersButton","cloudinaryAnalytics","colors","debug","fetchErrorUsingGet","floatingWhenNotVisible","fluid","fontFace","hideContextMenu","ima","pictureInPictureToggle","playedEventPercents","playedEventTimes","playlistWidget","profile","qualitySelector","queryParams","seekThumbnails","showJumpControls","videoConfig","schedule"]),a=["api_secret","auth_token","cdn_subdomain","cloud_name","cname","private_cdn","secure","secure_cdn_subdomain","secure_distribution","shorten","sign_url","url_suffix","use_root_path"],u="cld-fluid",i={ALWAYS:"always",ON_SCROLL:"on-scroll",NEVER:"never"},s={LEFT:"left",RIGHT:"right",NONE:"none"},c={FIRST_VIDEO:"first-video",EVERY_VIDEO:"every-video"},p={AUTO:"auto",METADATA:"metadata",NONE:"none"},f={FILL:"fill",PAD:"pad",SMART:"smart"}},9073(t,r,e){var n=e(2316),o=e(6458),a=e(2149),u=e(4297),i=e(3121);function s(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=u,s.prototype.set=i,t.exports=s},2707(t,r,e){var n=e(9714),o=e(3812),a=e(4727),u=e(8379),i=e(8291);function s(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=u,s.prototype.set=i,t.exports=s},1955(t,r,e){var n=e(9138)(e(1433),"Map");t.exports=n},369(t,r,e){var n=e(2092),o=e(9626),a=e(9925),u=e(6809),i=e(4385);function s(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}s.prototype.clear=n,s.prototype.delete=o,s.prototype.get=a,s.prototype.has=u,s.prototype.set=i,t.exports=s},2781(t,r,e){var n=e(1433).Symbol;t.exports=n},6701(t){t.exports=function(t,r,e){switch(e.length){case 0:return t.call(r);case 1:return t.call(r,e[0]);case 2:return t.call(r,e[0],e[1]);case 3:return t.call(r,e[0],e[1],e[2])}return t.apply(r,e)}},4272(t){t.exports=function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e<n;)o[e]=r(t[e],e,t);return o}},8740(t){t.exports=function(t,r){for(var e=-1,n=r.length,o=t.length;++e<n;)t[o+e]=r[e];return t}},2814(t){t.exports=function(t,r,e,n){var o=-1,a=null==t?0:t.length;for(n&&a&&(e=t[++o]);++o<a;)e=r(e,t[o],o,t);return e}},8273(t){var r=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;t.exports=function(t){return t.match(r)||[]}},2863(t,r,e){var n=e(4772),o=e(9316),a=Object.prototype.hasOwnProperty;t.exports=function(t,r,e){var u=t[r];a.call(t,r)&&o(u,e)&&(void 0!==e||r in t)||n(t,r,e)}},8301(t,r,e){var n=e(9316);t.exports=function(t,r){for(var e=t.length;e--;)if(n(t[e][0],r))return e;return-1}},4772(t,r,e){var n=e(8559);t.exports=function(t,r,e){"__proto__"==r&&n?n(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}},1044(t,r,e){var n=e(8740),o=e(8031);t.exports=function t(r,e,a,u,i){var s=-1,c=r.length;for(a||(a=o),i||(i=[]);++s<c;){var p=r[s];e>0&&a(p)?e>1?t(p,e-1,a,u,i):n(i,p):u||(i[i.length]=p)}return i}},7722(t,r,e){var n=e(7181),o=e(6729);t.exports=function(t,r){for(var e=0,a=(r=n(r,t)).length;null!=t&&e<a;)t=t[o(r[e++])];return e&&e==a?t:void 0}},7148(t,r,e){var n=e(2781),o=e(7903),a=e(1738),u=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?o(t):a(t)}},809(t){t.exports=function(t,r){return null!=t&&r in Object(t)}},9250(t,r,e){var n=e(7148),o=e(2934);t.exports=function(t){return o(t)&&"[object Arguments]"==n(t)}},6567(t,r,e){var n=e(8446),o=e(8092),a=e(8953),u=e(1485),i=/^\[object .+?Constructor\]$/,s=Function.prototype,c=Object.prototype,p=s.toString,f=c.hasOwnProperty,l=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||o(t))&&(n(t)?l:i).test(u(t))}},6733(t,r,e){var n=e(5576),o=e(8235);t.exports=function(t,r){return n(t,r,function(r,e){return o(t,e)})}},5576(t,r,e){var n=e(7722),o=e(8230),a=e(7181);t.exports=function(t,r,e){for(var u=-1,i=r.length,s={};++u<i;){var c=r[u],p=n(t,c);e(p,c)&&o(s,a(c,t),p)}return s}},6764(t){t.exports=function(t){return function(r){return null==t?void 0:t[r]}}},8230(t,r,e){var n=e(2863),o=e(7181),a=e(2845),u=e(8953),i=e(6729);t.exports=function(t,r,e,s){if(!u(t))return t;for(var c=-1,p=(r=o(r,t)).length,f=p-1,l=t;null!=l&&++c<p;){var v=i(r[c]),d=e;if("__proto__"===v||"constructor"===v||"prototype"===v)return t;if(c!=f){var h=l[v];void 0===(d=s?s(h,v,l):void 0)&&(d=u(h)?h:a(r[c+1])?[]:{})}n(l,v,d),l=l[v]}return t}},7310(t,r,e){var n=e(3122),o=e(8559),a=e(4796),u=o?function(t,r){return o(t,"toString",{configurable:!0,enumerable:!1,value:n(r),writable:!0})}:a;t.exports=u},6584(t,r,e){var n=e(2781),o=e(4272),a=e(6397),u=e(5414),i=n?n.prototype:void 0,s=i?i.toString:void 0;t.exports=function t(r){if("string"==typeof r)return r;if(a(r))return o(r,t)+"";if(u(r))return s?s.call(r):"";var e=r+"";return"0"==e&&1/r==-1/0?"-0":e}},7181(t,r,e){var n=e(6397),o=e(3726),a=e(3614),u=e(3506);t.exports=function(t,r){return n(t)?t:o(t,r)?[t]:a(u(t))}},8109(t,r,e){var n=e(1433)["__core-js_shared__"];t.exports=n},6983(t,r,e){var n=e(2814),o=e(3768),a=e(7385),u=RegExp("['’]","g");t.exports=function(t){return function(r){return n(a(o(r).replace(u,"")),t,"")}}},8795(t,r,e){var n=e(6764)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});t.exports=n},8559(t,r,e){var n=e(9138),o=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},9820(t,r,e){var n=e(3406),o=e(5265),a=e(6805);t.exports=function(t){return a(o(t,void 0,n),t+"")}},5380(t,r,e){var n="object"==typeof e.g&&e.g&&e.g.Object===Object&&e.g;t.exports=n},5535(t,r,e){var n=e(5662);t.exports=function(t,r){var e=t.__data__;return n(r)?e["string"==typeof r?"string":"hash"]:e.map}},9138(t,r,e){var n=e(6567),o=e(6772);t.exports=function(t,r){var e=o(t,r);return n(e)?e:void 0}},7903(t,r,e){var n=e(2781),o=Object.prototype,a=o.hasOwnProperty,u=o.toString,i=n?n.toStringTag:void 0;t.exports=function(t){var r=a.call(t,i),e=t[i];try{t[i]=void 0;var n=!0}catch(t){}var o=u.call(t);return n&&(r?t[i]=e:delete t[i]),o}},6772(t){t.exports=function(t,r){return null==t?void 0:t[r]}},6866(t,r,e){var n=e(7181),o=e(1256),a=e(6397),u=e(2845),i=e(3330),s=e(6729);t.exports=function(t,r,e){for(var c=-1,p=(r=n(r,t)).length,f=!1;++c<p;){var l=s(r[c]);if(!(f=null!=t&&e(t,l)))break;t=t[l]}return f||++c!=p?f:!!(p=null==t?0:t.length)&&i(p)&&u(l,p)&&(a(t)||o(t))}},5854(t){var r=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;t.exports=function(t){return r.test(t)}},2316(t,r,e){var n=e(4558);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},6458(t){t.exports=function(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}},2149(t,r,e){var n=e(4558),o=Object.prototype.hasOwnProperty;t.exports=function(t){var r=this.__data__;if(n){var e=r[t];return"__lodash_hash_undefined__"===e?void 0:e}return o.call(r,t)?r[t]:void 0}},4297(t,r,e){var n=e(4558),o=Object.prototype.hasOwnProperty;t.exports=function(t){var r=this.__data__;return n?void 0!==r[t]:o.call(r,t)}},3121(t,r,e){var n=e(4558);t.exports=function(t,r){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=n&&void 0===r?"__lodash_hash_undefined__":r,this}},8031(t,r,e){var n=e(2781),o=e(1256),a=e(6397),u=n?n.isConcatSpreadable:void 0;t.exports=function(t){return a(t)||o(t)||!!(u&&t&&t[u])}},2845(t){var r=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},3726(t,r,e){var n=e(6397),o=e(5414),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;t.exports=function(t,r){if(n(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!o(t))||(u.test(t)||!a.test(t)||null!=r&&t in Object(r))}},5662(t){t.exports=function(t){var r=typeof t;return"string"==r||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==t:null===t}},8092(t,r,e){var n,o=e(8109),a=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";t.exports=function(t){return!!a&&a in t}},9714(t){t.exports=function(){this.__data__=[],this.size=0}},3812(t,r,e){var n=e(8301),o=Array.prototype.splice;t.exports=function(t){var r=this.__data__,e=n(r,t);return!(e<0)&&(e==r.length-1?r.pop():o.call(r,e,1),--this.size,!0)}},4727(t,r,e){var n=e(8301);t.exports=function(t){var r=this.__data__,e=n(r,t);return e<0?void 0:r[e][1]}},8379(t,r,e){var n=e(8301);t.exports=function(t){return n(this.__data__,t)>-1}},8291(t,r,e){var n=e(8301);t.exports=function(t,r){var e=this.__data__,o=n(e,t);return o<0?(++this.size,e.push([t,r])):e[o][1]=r,this}},2092(t,r,e){var n=e(9073),o=e(2707),a=e(1955);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(a||o),string:new n}}},9626(t,r,e){var n=e(5535);t.exports=function(t){var r=n(this,t).delete(t);return this.size-=r?1:0,r}},9925(t,r,e){var n=e(5535);t.exports=function(t){return n(this,t).get(t)}},6809(t,r,e){var n=e(5535);t.exports=function(t){return n(this,t).has(t)}},4385(t,r,e){var n=e(5535);t.exports=function(t,r){var e=n(this,t),o=e.size;return e.set(t,r),this.size+=e.size==o?0:1,this}},9268(t,r,e){var n=e(4556);t.exports=function(t){var r=n(t,function(t){return 500===e.size&&e.clear(),t}),e=r.cache;return r}},4558(t,r,e){var n=e(9138)(Object,"create");t.exports=n},1738(t){var r=Object.prototype.toString;t.exports=function(t){return r.call(t)}},5265(t,r,e){var n=e(6701),o=Math.max;t.exports=function(t,r,e){return r=o(void 0===r?t.length-1:r,0),function(){for(var a=arguments,u=-1,i=o(a.length-r,0),s=Array(i);++u<i;)s[u]=a[r+u];u=-1;for(var c=Array(r+1);++u<r;)c[u]=a[u];return c[r]=e(s),n(t,this,c)}}},1433(t,r,e){var n=e(5380),o="object"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function("return this")();t.exports=a},6805(t,r,e){var n=e(7310),o=e(3983)(n);t.exports=o},3983(t){var r=Date.now;t.exports=function(t){var e=0,n=0;return function(){var o=r(),a=16-(o-n);if(n=o,a>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},3614(t,r,e){var n=e(9268),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,u=n(function(t){var r=[];return 46===t.charCodeAt(0)&&r.push(""),t.replace(o,function(t,e,n,o){r.push(n?o.replace(a,"$1"):e||t)}),r});t.exports=u},6729(t,r,e){var n=e(5414);t.exports=function(t){if("string"==typeof t||n(t))return t;var r=t+"";return"0"==r&&1/t==-1/0?"-0":r}},1485(t){var r=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return r.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},5701(t){var r="\\ud800-\\udfff",e="\\u2700-\\u27bf",n="a-z\\xdf-\\xf6\\xf8-\\xff",o="A-Z\\xc0-\\xd6\\xd8-\\xde",a="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",u="["+a+"]",i="\\d+",s="["+e+"]",c="["+n+"]",p="[^"+r+a+i+e+n+o+"]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",l="[\\ud800-\\udbff][\\udc00-\\udfff]",v="["+o+"]",d="(?:"+c+"|"+p+")",h="(?:"+v+"|"+p+")",x="(?:['’](?:d|ll|m|re|s|t|ve))?",g="(?:['’](?:D|LL|M|RE|S|T|VE))?",y="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",_="[\\ufe0e\\ufe0f]?",m=_+y+("(?:\\u200d(?:"+["[^"+r+"]",f,l].join("|")+")"+_+y+")*"),b="(?:"+[s,f,l].join("|")+")"+m,j=RegExp([v+"?"+c+"+"+x+"(?="+[u,v,"$"].join("|")+")",h+"+"+g+"(?="+[u,v+d,"$"].join("|")+")",v+"?"+d+"+"+x,v+"+"+g,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",i,b].join("|"),"g");t.exports=function(t){return t.match(j)||[]}},3122(t){t.exports=function(t){return function(){return t}}},3768(t,r,e){var n=e(8795),o=e(3506),a=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,u=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");t.exports=function(t){return(t=o(t))&&t.replace(a,n).replace(u,"")}},9316(t){t.exports=function(t,r){return t===r||t!=t&&r!=r}},3406(t,r,e){var n=e(1044);t.exports=function(t){return(null==t?0:t.length)?n(t,1):[]}},8235(t,r,e){var n=e(809),o=e(6866);t.exports=function(t,r){return null!=t&&o(t,r,n)}},4796(t){t.exports=function(t){return t}},1256(t,r,e){var n=e(9250),o=e(2934),a=Object.prototype,u=a.hasOwnProperty,i=a.propertyIsEnumerable,s=n(function(){return arguments}())?n:function(t){return o(t)&&u.call(t,"callee")&&!i.call(t,"callee")};t.exports=s},6397(t){var r=Array.isArray;t.exports=r},8446(t,r,e){var n=e(7148),o=e(8953);t.exports=function(t){if(!o(t))return!1;var r=n(t);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}},3330(t){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},8953(t){t.exports=function(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}},2934(t){t.exports=function(t){return null!=t&&"object"==typeof t}},5414(t,r,e){var n=e(7148),o=e(2934);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==n(t)}},4556(t,r,e){var n=e(369);function o(t,r){if("function"!=typeof t||null!=r&&"function"!=typeof r)throw new TypeError("Expected a function");var e=function(){var n=arguments,o=r?r.apply(this,n):n[0],a=e.cache;if(a.has(o))return a.get(o);var u=t.apply(this,n);return e.cache=a.set(o,u)||a,u};return e.cache=new(o.Cache||n),e}o.Cache=n,t.exports=o},7171(t,r,e){var n=e(6733),o=e(9820)(function(t,r){return null==t?{}:n(t,r)});t.exports=o},5072(t,r,e){var n=e(6983)(function(t,r,e){return t+(e?"_":"")+r.toLowerCase()});t.exports=n},3506(t,r,e){var n=e(6584);t.exports=function(t){return null==t?"":n(t)}},7385(t,r,e){var n=e(8273),o=e(5854),a=e(3506),u=e(5701);t.exports=function(t,r,e){return t=a(t),void 0===(r=e?void 0:r)?o(t)?u(t):n(t):t.match(r)||[]}}}]);