@opendesign-plus/components 0.0.1-rc.101 → 0.0.1-rc.103

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 (1202) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -0
  2. package/dist/chunk-OElCookieNotice.es.js +1525 -0
  3. package/dist/components/activity/index.d.ts +9 -9
  4. package/dist/components/anchor-bar/OAnchorBar.vue.d.ts +2 -2
  5. package/dist/components/anchor-bar/index.d.ts +9 -9
  6. package/dist/components/article/index.d.ts +25 -25
  7. package/dist/components/article-anchor/OArticleAnchor.vue.d.ts +138 -1
  8. package/dist/components/article-anchor/index.d.ts +163 -11
  9. package/dist/components/article-anchor/types.d.ts +10 -2
  10. package/dist/components/article-pagination/index.d.ts +17 -17
  11. package/dist/components/banner/index.d.ts +6 -6
  12. package/dist/components/brand/index.d.ts +15 -15
  13. package/dist/components/doc-layout/ODocLayout.vue.d.ts +364 -4
  14. package/dist/components/doc-layout/index.d.ts +188 -4
  15. package/dist/components/events/index.d.ts +20 -20
  16. package/dist/components/footer/index.d.ts +3 -3
  17. package/dist/components/header/OHeaderMobile.vue.d.ts +8 -8
  18. package/dist/components/header/components/HeaderNavMobile.vue.d.ts +1 -1
  19. package/dist/components/header/index.d.ts +28 -28
  20. package/dist/components/header-search/index.d.ts +13 -13
  21. package/dist/components/logo-swiper/index.d.ts +11 -11
  22. package/dist/components/meeting/OMeetingPlayback.vue.d.ts +6 -6
  23. package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
  24. package/dist/components/meeting/config.d.ts +1 -0
  25. package/dist/components/meeting/index.d.ts +51 -51
  26. package/dist/components/meeting/types.d.ts +1 -1
  27. package/dist/components/meeting/utils.d.ts +1 -0
  28. package/dist/components/org/index.d.ts +9 -9
  29. package/dist/components/recursion-menu/index.d.ts +3 -3
  30. package/dist/components/search/index.d.ts +11 -11
  31. package/dist/components/search-result/OSearchResultHeader.vue.d.ts +24 -24
  32. package/dist/components/search-result/index.d.ts +31 -31
  33. package/dist/components/sig/index.d.ts +15 -15
  34. package/dist/components/summit/index.d.ts +12 -12
  35. package/dist/components/user-center/index.d.ts +18 -18
  36. package/dist/components/video/index.d.ts +3 -3
  37. package/dist/components.cjs.js +89 -55
  38. package/dist/components.css +9 -2
  39. package/dist/components.element.cjs.js +1 -1
  40. package/dist/components.element.es.js +4 -1
  41. package/dist/components.es.js +66097 -48167
  42. package/dist/treeshaking/_virtual/@babel/runtime/helpers/esm/extends.js.mjs +10 -9
  43. package/dist/treeshaking/_virtual/@babel/runtime/helpers/extends.js.mjs +22 -16
  44. package/dist/treeshaking/_virtual/@babel/runtime/helpers/extends.js2.mjs +4 -0
  45. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/byte-helpers.js.mjs +128 -133
  46. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/codecs.js.mjs +146 -152
  47. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/containers.js.mjs +150 -176
  48. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js.mjs +12 -11
  49. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/ebml-helpers.js.mjs +118 -157
  50. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/id3-helpers.js.mjs +30 -21
  51. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/media-groups.js.mjs +12 -20
  52. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/media-types.js.mjs +14 -18
  53. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/mp4-helpers.js.mjs +53 -150
  54. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/nal-helpers.js.mjs +74 -78
  55. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/resolve-url.js.mjs +21 -15
  56. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/stream.js.mjs +51 -55
  57. package/dist/treeshaking/_virtual/@videojs/xhr/lib/http-handler.js.mjs +55 -40
  58. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js.mjs +7 -242
  59. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js2.mjs +300 -0
  60. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js3.mjs +4 -0
  61. package/dist/treeshaking/_virtual/@videojs/xhr/lib/interceptors.js.mjs +109 -94
  62. package/dist/treeshaking/_virtual/@videojs/xhr/lib/retry.js.mjs +104 -100
  63. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/conventions.js.mjs +142 -177
  64. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/conventions.js2.mjs +4 -0
  65. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom-parser.js.mjs +224 -244
  66. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom-parser.js2.mjs +4 -0
  67. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom.js.mjs +1449 -1443
  68. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom.js2.mjs +4 -0
  69. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/entities.js.mjs +2149 -2168
  70. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/entities.js2.mjs +4 -0
  71. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js.mjs +5 -12
  72. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js2.mjs +16 -0
  73. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js3.mjs +4 -0
  74. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/sax.js.mjs +594 -489
  75. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/sax.js2.mjs +4 -0
  76. package/dist/treeshaking/_virtual/___vite-browser-external.mjs +6 -0
  77. package/dist/treeshaking/_virtual/__vite-browser-external.mjs +4 -7
  78. package/dist/treeshaking/_virtual/_commonjs-dynamic-modules.mjs +6 -0
  79. package/dist/treeshaking/_virtual/_commonjsHelpers.mjs +33 -0
  80. package/dist/treeshaking/_virtual/_plugin-vue_export-helper.mjs +9 -6
  81. package/dist/treeshaking/_virtual/cropperjs/dist/cropper.esm.js.mjs +2739 -0
  82. package/dist/treeshaking/_virtual/crypto-js/aes.js.mjs +162 -163
  83. package/dist/treeshaking/_virtual/crypto-js/aes.js2.mjs +4 -0
  84. package/dist/treeshaking/_virtual/crypto-js/blowfish.js.mjs +1197 -1214
  85. package/dist/treeshaking/_virtual/crypto-js/blowfish.js2.mjs +4 -0
  86. package/dist/treeshaking/_virtual/crypto-js/cipher-core.js.mjs +649 -683
  87. package/dist/treeshaking/_virtual/crypto-js/cipher-core.js2.mjs +4 -0
  88. package/dist/treeshaking/_virtual/crypto-js/core.js.mjs +614 -589
  89. package/dist/treeshaking/_virtual/crypto-js/core.js2.mjs +4 -0
  90. package/dist/treeshaking/_virtual/crypto-js/enc-base64.js.mjs +112 -90
  91. package/dist/treeshaking/_virtual/crypto-js/enc-base64.js2.mjs +4 -0
  92. package/dist/treeshaking/_virtual/crypto-js/enc-base64url.js.mjs +123 -97
  93. package/dist/treeshaking/_virtual/crypto-js/enc-base64url.js2.mjs +4 -0
  94. package/dist/treeshaking/_virtual/crypto-js/enc-utf16.js.mjs +122 -113
  95. package/dist/treeshaking/_virtual/crypto-js/enc-utf16.js2.mjs +4 -0
  96. package/dist/treeshaking/_virtual/crypto-js/evpkdf.js.mjs +97 -113
  97. package/dist/treeshaking/_virtual/crypto-js/evpkdf.js2.mjs +4 -0
  98. package/dist/treeshaking/_virtual/crypto-js/format-hex.js.mjs +65 -56
  99. package/dist/treeshaking/_virtual/crypto-js/format-hex.js2.mjs +4 -0
  100. package/dist/treeshaking/_virtual/crypto-js/hmac.js.mjs +111 -97
  101. package/dist/treeshaking/_virtual/crypto-js/hmac.js2.mjs +4 -0
  102. package/dist/treeshaking/_virtual/crypto-js/index.js.mjs +7 -84
  103. package/dist/treeshaking/_virtual/crypto-js/index.js2.mjs +55 -0
  104. package/dist/treeshaking/_virtual/crypto-js/index.js3.mjs +4 -0
  105. package/dist/treeshaking/_virtual/crypto-js/lib-typedarrays.js.mjs +49 -30
  106. package/dist/treeshaking/_virtual/crypto-js/lib-typedarrays.js2.mjs +4 -0
  107. package/dist/treeshaking/_virtual/crypto-js/md5.js.mjs +183 -205
  108. package/dist/treeshaking/_virtual/crypto-js/md5.js2.mjs +4 -0
  109. package/dist/treeshaking/_virtual/crypto-js/mode-cfb.js.mjs +57 -45
  110. package/dist/treeshaking/_virtual/crypto-js/mode-cfb.js2.mjs +4 -0
  111. package/dist/treeshaking/_virtual/crypto-js/mode-ctr-gladman.js.mjs +85 -62
  112. package/dist/treeshaking/_virtual/crypto-js/mode-ctr-gladman.js2.mjs +4 -0
  113. package/dist/treeshaking/_virtual/crypto-js/mode-ctr.js.mjs +45 -36
  114. package/dist/treeshaking/_virtual/crypto-js/mode-ctr.js2.mjs +4 -0
  115. package/dist/treeshaking/_virtual/crypto-js/mode-ecb.js.mjs +36 -28
  116. package/dist/treeshaking/_virtual/crypto-js/mode-ecb.js2.mjs +4 -0
  117. package/dist/treeshaking/_virtual/crypto-js/mode-ofb.js.mjs +43 -34
  118. package/dist/treeshaking/_virtual/crypto-js/mode-ofb.js2.mjs +4 -0
  119. package/dist/treeshaking/_virtual/crypto-js/pad-ansix923.js.mjs +37 -33
  120. package/dist/treeshaking/_virtual/crypto-js/pad-ansix923.js2.mjs +4 -0
  121. package/dist/treeshaking/_virtual/crypto-js/pad-iso10126.js.mjs +33 -29
  122. package/dist/treeshaking/_virtual/crypto-js/pad-iso10126.js2.mjs +4 -0
  123. package/dist/treeshaking/_virtual/crypto-js/pad-iso97971.js.mjs +32 -28
  124. package/dist/treeshaking/_virtual/crypto-js/pad-iso97971.js2.mjs +4 -0
  125. package/dist/treeshaking/_virtual/crypto-js/pad-nopadding.js.mjs +28 -22
  126. package/dist/treeshaking/_virtual/crypto-js/pad-nopadding.js2.mjs +4 -0
  127. package/dist/treeshaking/_virtual/crypto-js/pad-zeropadding.js.mjs +39 -33
  128. package/dist/treeshaking/_virtual/crypto-js/pad-zeropadding.js2.mjs +4 -0
  129. package/dist/treeshaking/_virtual/crypto-js/pbkdf2.js.mjs +104 -119
  130. package/dist/treeshaking/_virtual/crypto-js/pbkdf2.js2.mjs +4 -0
  131. package/dist/treeshaking/_virtual/crypto-js/rabbit-legacy.js.mjs +134 -139
  132. package/dist/treeshaking/_virtual/crypto-js/rabbit-legacy.js2.mjs +4 -0
  133. package/dist/treeshaking/_virtual/crypto-js/rabbit.js.mjs +137 -136
  134. package/dist/treeshaking/_virtual/crypto-js/rabbit.js2.mjs +4 -0
  135. package/dist/treeshaking/_virtual/crypto-js/rc4.js.mjs +91 -105
  136. package/dist/treeshaking/_virtual/crypto-js/rc4.js2.mjs +4 -0
  137. package/dist/treeshaking/_virtual/crypto-js/ripemd160.js.mjs +485 -510
  138. package/dist/treeshaking/_virtual/crypto-js/ripemd160.js2.mjs +4 -0
  139. package/dist/treeshaking/_virtual/crypto-js/sha1.js.mjs +95 -113
  140. package/dist/treeshaking/_virtual/crypto-js/sha1.js2.mjs +4 -0
  141. package/dist/treeshaking/_virtual/crypto-js/sha224.js.mjs +50 -73
  142. package/dist/treeshaking/_virtual/crypto-js/sha224.js2.mjs +4 -0
  143. package/dist/treeshaking/_virtual/crypto-js/sha256.js.mjs +125 -142
  144. package/dist/treeshaking/_virtual/crypto-js/sha256.js2.mjs +4 -0
  145. package/dist/treeshaking/_virtual/crypto-js/sha3.js.mjs +207 -210
  146. package/dist/treeshaking/_virtual/crypto-js/sha3.js2.mjs +4 -0
  147. package/dist/treeshaking/_virtual/crypto-js/sha384.js.mjs +52 -80
  148. package/dist/treeshaking/_virtual/crypto-js/sha384.js2.mjs +4 -0
  149. package/dist/treeshaking/_virtual/crypto-js/sha512.js.mjs +287 -307
  150. package/dist/treeshaking/_virtual/crypto-js/sha512.js2.mjs +4 -0
  151. package/dist/treeshaking/_virtual/crypto-js/tripledes.js.mjs +789 -817
  152. package/dist/treeshaking/_virtual/crypto-js/tripledes.js2.mjs +4 -0
  153. package/dist/treeshaking/_virtual/crypto-js/x64-core.js.mjs +261 -102
  154. package/dist/treeshaking/_virtual/crypto-js/x64-core.js2.mjs +4 -0
  155. package/dist/treeshaking/_virtual/global/document.js.mjs +7 -16
  156. package/dist/treeshaking/_virtual/global/document.js2.mjs +24 -0
  157. package/dist/treeshaking/_virtual/global/window.js.mjs +7 -12
  158. package/dist/treeshaking/_virtual/global/window.js2.mjs +22 -0
  159. package/dist/treeshaking/_virtual/icon-add-dark.mjs +40 -0
  160. package/dist/treeshaking/_virtual/icon-add-new.mjs +17 -0
  161. package/dist/treeshaking/_virtual/icon-address.mjs +21 -0
  162. package/dist/treeshaking/_virtual/icon-all.mjs +20 -0
  163. package/dist/treeshaking/_virtual/icon-anchor-expand.mjs +20 -0
  164. package/dist/treeshaking/_virtual/icon-anchor.mjs +22 -0
  165. package/dist/treeshaking/_virtual/icon-arrow-left.mjs +20 -0
  166. package/dist/treeshaking/_virtual/icon-atomgit.mjs +25 -0
  167. package/dist/treeshaking/_virtual/icon-avatar-line.mjs +20 -0
  168. package/dist/treeshaking/_virtual/icon-caret-left.mjs +20 -0
  169. package/dist/treeshaking/_virtual/icon-caret-right.mjs +20 -0
  170. package/dist/treeshaking/_virtual/icon-check.mjs +20 -0
  171. package/dist/treeshaking/_virtual/icon-checked.mjs +20 -0
  172. package/dist/treeshaking/_virtual/icon-chevron-down.mjs +20 -0
  173. package/dist/treeshaking/_virtual/icon-chevron-right.mjs +20 -0
  174. package/dist/treeshaking/_virtual/icon-chevron-right2.mjs +20 -0
  175. package/dist/treeshaking/_virtual/icon-chevron-up.mjs +20 -0
  176. package/dist/treeshaking/_virtual/icon-close.mjs +20 -0
  177. package/dist/treeshaking/_virtual/icon-close2.mjs +20 -0
  178. package/dist/treeshaking/_virtual/icon-competition.mjs +31 -0
  179. package/dist/treeshaking/_virtual/icon-copy.mjs +21 -0
  180. package/dist/treeshaking/_virtual/icon-copy2.mjs +20 -0
  181. package/dist/treeshaking/_virtual/icon-delete-hover.mjs +24 -0
  182. package/dist/treeshaking/_virtual/icon-delete.mjs +17 -0
  183. package/dist/treeshaking/_virtual/icon-done.mjs +20 -0
  184. package/dist/treeshaking/_virtual/icon-download.mjs +17 -0
  185. package/dist/treeshaking/_virtual/icon-edit-new.mjs +17 -0
  186. package/dist/treeshaking/_virtual/icon-edit.mjs +38 -0
  187. package/dist/treeshaking/_virtual/icon-email.mjs +22 -0
  188. package/dist/treeshaking/_virtual/icon-email2.mjs +21 -0
  189. package/dist/treeshaking/_virtual/icon-event.mjs +21 -0
  190. package/dist/treeshaking/_virtual/icon-events.mjs +31 -0
  191. package/dist/treeshaking/_virtual/icon-expand.mjs +21 -0
  192. package/dist/treeshaking/_virtual/icon-eye-off.mjs +20 -0
  193. package/dist/treeshaking/_virtual/icon-eye.mjs +20 -0
  194. package/dist/treeshaking/_virtual/icon-forum.mjs +21 -0
  195. package/dist/treeshaking/_virtual/icon-gitcode-new.mjs +30 -0
  196. package/dist/treeshaking/_virtual/icon-gitee.mjs +20 -0
  197. package/dist/treeshaking/_virtual/icon-gitee2.mjs +20 -0
  198. package/dist/treeshaking/_virtual/icon-github.mjs +20 -0
  199. package/dist/treeshaking/_virtual/icon-header-back.mjs +20 -0
  200. package/dist/treeshaking/_virtual/icon-header-menu.mjs +20 -0
  201. package/dist/treeshaking/_virtual/icon-header-search.mjs +20 -0
  202. package/dist/treeshaking/_virtual/icon-help.mjs +21 -0
  203. package/dist/treeshaking/_virtual/icon-image-upload.mjs +20 -0
  204. package/dist/treeshaking/_virtual/icon-image-zoomin.mjs +20 -0
  205. package/dist/treeshaking/_virtual/icon-like.mjs +20 -0
  206. package/dist/treeshaking/_virtual/icon-link.mjs +31 -0
  207. package/dist/treeshaking/_virtual/icon-loading.mjs +24 -0
  208. package/dist/treeshaking/_virtual/icon-locale.mjs +20 -0
  209. package/dist/treeshaking/_virtual/icon-mail.mjs +17 -0
  210. package/dist/treeshaking/_virtual/icon-material.mjs +21 -0
  211. package/dist/treeshaking/_virtual/icon-meet.mjs +20 -0
  212. package/dist/treeshaking/_virtual/icon-menu-fold.mjs +20 -0
  213. package/dist/treeshaking/_virtual/icon-menu-unfold.mjs +20 -0
  214. package/dist/treeshaking/_virtual/icon-minus-dark.mjs +74 -0
  215. package/dist/treeshaking/_virtual/icon-minus-new.mjs +17 -0
  216. package/dist/treeshaking/_virtual/icon-moon.mjs +20 -0
  217. package/dist/treeshaking/_virtual/icon-more.mjs +19 -0
  218. package/dist/treeshaking/_virtual/icon-next.mjs +23 -0
  219. package/dist/treeshaking/_virtual/icon-notice.mjs +20 -0
  220. package/dist/treeshaking/_virtual/icon-openatom.mjs +21 -0
  221. package/dist/treeshaking/_virtual/icon-outlink.mjs +20 -0
  222. package/dist/treeshaking/_virtual/icon-phone.mjs +22 -0
  223. package/dist/treeshaking/_virtual/icon-playing.mjs +33 -0
  224. package/dist/treeshaking/_virtual/icon-refresh.mjs +21 -0
  225. package/dist/treeshaking/_virtual/icon-refresh2.mjs +45 -0
  226. package/dist/treeshaking/_virtual/icon-relative-search.mjs +21 -0
  227. package/dist/treeshaking/_virtual/icon-release.mjs +31 -0
  228. package/dist/treeshaking/_virtual/icon-search.mjs +17 -0
  229. package/dist/treeshaking/_virtual/icon-search2.mjs +17 -0
  230. package/dist/treeshaking/_virtual/icon-setting.mjs +20 -0
  231. package/dist/treeshaking/_virtual/icon-smile.mjs +21 -0
  232. package/dist/treeshaking/_virtual/icon-speaker.mjs +17 -0
  233. package/dist/treeshaking/_virtual/icon-star.mjs +20 -0
  234. package/dist/treeshaking/_virtual/icon-summit.mjs +21 -0
  235. package/dist/treeshaking/_virtual/icon-summit2.mjs +31 -0
  236. package/dist/treeshaking/_virtual/icon-sun.mjs +20 -0
  237. package/dist/treeshaking/_virtual/icon-time.mjs +20 -0
  238. package/dist/treeshaking/_virtual/icon-tip.mjs +21 -0
  239. package/dist/treeshaking/_virtual/icon-tips.mjs +17 -0
  240. package/dist/treeshaking/_virtual/icon-tips2.mjs +28 -0
  241. package/dist/treeshaking/_virtual/icon-unexpand.mjs +22 -0
  242. package/dist/treeshaking/_virtual/icon-unlike.mjs +20 -0
  243. package/dist/treeshaking/_virtual/icon-user.mjs +17 -0
  244. package/dist/treeshaking/_virtual/icon-video.mjs +28 -0
  245. package/dist/treeshaking/_virtual/icon-wechat.mjs +18 -0
  246. package/dist/treeshaking/_virtual/icon-working.mjs +17 -0
  247. package/dist/treeshaking/_virtual/is-function/index.js.mjs +20 -13
  248. package/dist/treeshaking/_virtual/m3u8-parser/dist/m3u8-parser.es.js.mjs +1380 -1145
  249. package/dist/treeshaking/_virtual/mpd-parser/dist/mpd-parser.es.js.mjs +1628 -1723
  250. package/dist/treeshaking/_virtual/mux.js/lib/tools/parse-sidx.js.mjs +7 -39
  251. package/dist/treeshaking/_virtual/mux.js/lib/tools/parse-sidx.js2.mjs +45 -0
  252. package/dist/treeshaking/_virtual/mux.js/lib/utils/clock.js.mjs +5 -44
  253. package/dist/treeshaking/_virtual/mux.js/lib/utils/clock.js2.mjs +42 -0
  254. package/dist/treeshaking/_virtual/mux.js/lib/utils/numbers.js.mjs +27 -21
  255. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Observable.js.mjs +91 -86
  256. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Subscriber.js.mjs +136 -141
  257. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Subscription.js.mjs +131 -105
  258. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/config.js.mjs +4 -7
  259. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.mjs +15 -15
  260. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/symbol/observable.js.mjs +4 -3
  261. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.mjs +11 -10
  262. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/arrRemove.js.mjs +7 -6
  263. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/createErrorClass.js.mjs +11 -10
  264. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/errorContext.js.mjs +6 -23
  265. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/identity.js.mjs +4 -3
  266. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/isFunction.js.mjs +4 -3
  267. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/noop.js.mjs +5 -3
  268. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/pipe.js.mjs +14 -9
  269. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/reportUnhandledError.js.mjs +8 -8
  270. package/dist/treeshaking/_virtual/sig-space.mjs +20 -0
  271. package/dist/treeshaking/_virtual/tslib/tslib.es6.mjs.mjs +54 -60
  272. package/dist/treeshaking/_virtual/video.js/dist/video.es.js.mjs +39520 -41504
  273. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js.mjs +7 -46
  274. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js2.mjs +37 -0
  275. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js3.mjs +4 -0
  276. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vtt.js.mjs +1082 -911
  277. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vttcue.js.mjs +235 -238
  278. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vttregion.js.mjs +122 -115
  279. package/dist/treeshaking/assets/meeting/empty.png.mjs +4 -0
  280. package/dist/treeshaking/assets/meeting/transparent.png.mjs +4 -0
  281. package/dist/treeshaking/assets/search/search-empty.png.mjs +4 -0
  282. package/dist/treeshaking/assets/svg-icons/icon-zoom.svg.mjs +4 -0
  283. package/dist/treeshaking/assets/user-center/images/avatar.png.mjs +4 -0
  284. package/dist/treeshaking/assets/user-center/images/default-user-photo.png.mjs +4 -0
  285. package/dist/treeshaking/assets/user-center/images/left-arrow-dark.svg.mjs +4 -0
  286. package/dist/treeshaking/assets/user-center/images/left-arrow-light.svg.mjs +4 -0
  287. package/dist/treeshaking/assets/user-center/images/noData.svg.mjs +4 -0
  288. package/dist/treeshaking/assets/user-center/images/warning-dark.svg.mjs +4 -0
  289. package/dist/treeshaking/assets/user-center/images/warning-light.svg.mjs +4 -0
  290. package/dist/treeshaking/components/activity/OActivityApproval.vue.mjs +672 -0
  291. package/dist/treeshaking/components/activity/OActivityApproval.vue4.mjs +6 -0
  292. package/dist/treeshaking/components/activity/OActivityApproval2.css +40 -0
  293. package/dist/treeshaking/components/activity/OActivityForm.css +364 -0
  294. package/dist/treeshaking/components/activity/OActivityForm.vue.mjs +628 -0
  295. package/dist/treeshaking/components/activity/OActivityForm.vue4.mjs +6 -0
  296. package/dist/treeshaking/components/activity/OActivityForm2.css +327 -0
  297. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue.mjs +861 -0
  298. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue4.mjs +6 -0
  299. package/dist/treeshaking/components/activity/OActivityMyCalendar2.css +318 -0
  300. package/dist/treeshaking/components/activity/composables/useActivityConfig.mjs +137 -88
  301. package/dist/treeshaking/components/activity/config.mjs +4 -3
  302. package/dist/treeshaking/components/activity/index.d.ts +9 -9
  303. package/dist/treeshaking/components/activity/index.mjs +29 -14
  304. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue.d.ts +2 -2
  305. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue.mjs +7 -0
  306. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue2.mjs +103 -0
  307. package/dist/treeshaking/components/anchor-bar/index.d.ts +9 -9
  308. package/dist/treeshaking/components/anchor-bar/index.mjs +9 -6
  309. package/dist/treeshaking/components/article/OArticle.vue.mjs +7 -0
  310. package/dist/treeshaking/components/article/OArticle.vue2.mjs +102 -0
  311. package/dist/treeshaking/components/article/OArticleList.css +253 -0
  312. package/dist/treeshaking/components/article/OArticleList.vue.mjs +219 -0
  313. package/dist/treeshaking/components/article/OArticleList.vue3.mjs +5 -0
  314. package/dist/treeshaking/components/article/components/ArticleTitle.vue.mjs +7 -0
  315. package/dist/treeshaking/components/article/components/ArticleTitle.vue2.mjs +97 -0
  316. package/dist/treeshaking/components/article/components/DocTitle.css +249 -0
  317. package/dist/treeshaking/components/article/components/DocTitle.vue.mjs +7 -0
  318. package/dist/treeshaking/components/article/components/DocTitle.vue2.mjs +310 -0
  319. package/dist/treeshaking/components/article/index.d.ts +25 -25
  320. package/dist/treeshaking/components/article/index.mjs +17 -10
  321. package/dist/treeshaking/components/article-anchor/OArticleAnchor.css +18 -0
  322. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue.d.ts +138 -1
  323. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue.mjs +7 -0
  324. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue2.mjs +303 -0
  325. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.css +11 -0
  326. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue.mjs +7 -0
  327. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue2.mjs +36 -0
  328. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.css +47 -0
  329. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue.mjs +7 -0
  330. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue2.mjs +182 -0
  331. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue.mjs +7 -0
  332. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue2.mjs +78 -0
  333. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue.mjs +7 -0
  334. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue2.mjs +38 -0
  335. package/dist/treeshaking/components/article-anchor/index.d.ts +163 -11
  336. package/dist/treeshaking/components/article-anchor/index.mjs +9 -6
  337. package/dist/treeshaking/components/article-anchor/types.d.ts +10 -2
  338. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue.mjs +7 -0
  339. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue2.mjs +107 -0
  340. package/dist/treeshaking/components/article-pagination/index.d.ts +17 -17
  341. package/dist/treeshaking/components/article-pagination/index.mjs +9 -6
  342. package/dist/treeshaking/components/banner/OBanner.vue.mjs +8 -0
  343. package/dist/treeshaking/components/banner/OBanner.vue2.mjs +142 -0
  344. package/dist/treeshaking/components/banner/OBannerContent.vue.mjs +7 -0
  345. package/dist/treeshaking/components/banner/OBannerContent.vue2.mjs +102 -0
  346. package/dist/treeshaking/components/banner/index.d.ts +6 -6
  347. package/dist/treeshaking/components/banner/index.mjs +16 -10
  348. package/dist/treeshaking/components/brand/OBrandFile.vue.mjs +7 -0
  349. package/dist/treeshaking/components/brand/OBrandFile.vue2.mjs +70 -0
  350. package/dist/treeshaking/components/brand/OBrandLogo.vue.mjs +8 -0
  351. package/dist/treeshaking/components/brand/OBrandLogo.vue2.mjs +120 -0
  352. package/dist/treeshaking/components/brand/OBrandStandard.vue.mjs +7 -0
  353. package/dist/treeshaking/components/brand/OBrandStandard.vue2.mjs +59 -0
  354. package/dist/treeshaking/components/brand/index.d.ts +15 -15
  355. package/dist/treeshaking/components/brand/index.mjs +23 -14
  356. package/dist/treeshaking/components/brand/utils.mjs +25 -21
  357. package/dist/treeshaking/components/common/AppAvatar.vue.mjs +7 -0
  358. package/dist/treeshaking/components/common/AppAvatar.vue2.mjs +83 -0
  359. package/dist/treeshaking/components/common/ClientOnly.vue.mjs +16 -0
  360. package/dist/treeshaking/components/common/ClientOnly.vue2.mjs +4 -0
  361. package/dist/treeshaking/components/common/ContentWrapper.vue.mjs +7 -0
  362. package/dist/treeshaking/components/common/ContentWrapper.vue2.mjs +50 -0
  363. package/dist/treeshaking/components/common/TooltipText.css +35 -0
  364. package/dist/treeshaking/components/common/TooltipText.vue.mjs +105 -0
  365. package/dist/treeshaking/components/common/TooltipText.vue3.mjs +5 -0
  366. package/dist/treeshaking/components/common/WordAvatar.vue.mjs +84 -0
  367. package/dist/treeshaking/components/common/WordAvatar.vue3.mjs +5 -0
  368. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue.mjs +35 -0
  369. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue2.mjs +4 -0
  370. package/dist/treeshaking/components/config-provider/index.mjs +9 -6
  371. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue.mjs +8 -0
  372. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue2.mjs +367 -0
  373. package/dist/treeshaking/components/cookie-notice/index.mjs +9 -6
  374. package/dist/treeshaking/components/doc-layout/ODocLayout.css +286 -0
  375. package/dist/treeshaking/components/doc-layout/ODocLayout.vue.d.ts +364 -4
  376. package/dist/treeshaking/components/doc-layout/ODocLayout.vue.mjs +7 -0
  377. package/dist/treeshaking/components/doc-layout/ODocLayout.vue2.mjs +179 -0
  378. package/dist/treeshaking/components/doc-layout/index.d.ts +188 -4
  379. package/dist/treeshaking/components/doc-layout/index.mjs +9 -6
  380. package/dist/treeshaking/components/element-plus/OElCookieNotice.css +303 -0
  381. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue.mjs +8 -0
  382. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue2.mjs +384 -0
  383. package/dist/treeshaking/components/element-plus/OElCookieNotice2.css +688 -0
  384. package/dist/treeshaking/components/empty/404.png.mjs +4 -0
  385. package/dist/treeshaking/components/empty/404_dark.png.mjs +4 -0
  386. package/dist/treeshaking/components/empty/OEmpty.vue.mjs +7 -0
  387. package/dist/treeshaking/components/empty/OEmpty.vue2.mjs +44 -0
  388. package/dist/treeshaking/components/empty/index.mjs +9 -6
  389. package/dist/treeshaking/components/events/OEventsApply.vue.mjs +98 -0
  390. package/dist/treeshaking/components/events/OEventsApply.vue3.mjs +5 -0
  391. package/dist/treeshaking/components/events/OEventsCalendar.vue.mjs +289 -0
  392. package/dist/treeshaking/components/events/OEventsCalendar.vue3.mjs +5 -0
  393. package/dist/treeshaking/components/events/OEventsList.vue.mjs +237 -0
  394. package/dist/treeshaking/components/events/OEventsList.vue3.mjs +5 -0
  395. package/dist/treeshaking/components/events/config.mjs +34 -30
  396. package/dist/treeshaking/components/events/index.d.ts +20 -20
  397. package/dist/treeshaking/components/events/index.mjs +26 -15
  398. package/dist/treeshaking/components/events/types.mjs +9 -8
  399. package/dist/treeshaking/components/events/utils.mjs +5 -10
  400. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue.mjs +7 -0
  401. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue2.mjs +165 -0
  402. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue.mjs +7 -0
  403. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue2.mjs +309 -0
  404. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue.mjs +99 -0
  405. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue2.mjs +4 -0
  406. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue.mjs +7 -0
  407. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue2.mjs +95 -0
  408. package/dist/treeshaking/components/feedback-doc/index.mjs +30 -18
  409. package/dist/treeshaking/components/float-poster/OFloatPoster.vue.mjs +7 -0
  410. package/dist/treeshaking/components/float-poster/OFloatPoster.vue2.mjs +84 -0
  411. package/dist/treeshaking/components/float-poster/index.mjs +9 -6
  412. package/dist/treeshaking/components/footer/OFooter.vue.mjs +7 -0
  413. package/dist/treeshaking/components/footer/OFooter.vue2.mjs +92 -0
  414. package/dist/treeshaking/components/footer/components/FooterList.vue.mjs +7 -0
  415. package/dist/treeshaking/components/footer/components/FooterList.vue2.mjs +214 -0
  416. package/dist/treeshaking/components/footer/components/FooterSimple.vue.mjs +7 -0
  417. package/dist/treeshaking/components/footer/components/FooterSimple.vue2.mjs +126 -0
  418. package/dist/treeshaking/components/footer/index.d.ts +3 -3
  419. package/dist/treeshaking/components/footer/index.mjs +9 -6
  420. package/dist/treeshaking/components/header/OHeader.vue.mjs +7 -0
  421. package/dist/treeshaking/components/header/OHeader.vue2.mjs +272 -0
  422. package/dist/treeshaking/components/header/OHeaderMobile.vue.d.ts +8 -8
  423. package/dist/treeshaking/components/header/OHeaderMobile.vue.mjs +7 -0
  424. package/dist/treeshaking/components/header/OHeaderMobile.vue2.mjs +145 -0
  425. package/dist/treeshaking/components/header/components/HeaderContent.vue.mjs +7 -0
  426. package/dist/treeshaking/components/header/components/HeaderContent.vue2.mjs +371 -0
  427. package/dist/treeshaking/components/header/components/HeaderFlatten.vue.mjs +7 -0
  428. package/dist/treeshaking/components/header/components/HeaderFlatten.vue2.mjs +288 -0
  429. package/dist/treeshaking/components/header/components/HeaderNav.vue.mjs +7 -0
  430. package/dist/treeshaking/components/header/components/HeaderNav.vue2.mjs +244 -0
  431. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue.d.ts +1 -1
  432. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue.mjs +7 -0
  433. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue2.mjs +253 -0
  434. package/dist/treeshaking/components/header/index.d.ts +28 -28
  435. package/dist/treeshaking/components/header/index.mjs +16 -11
  436. package/dist/treeshaking/components/header/types.mjs +9 -8
  437. package/dist/treeshaking/components/header/utils.mjs +18 -10
  438. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue.mjs +8 -0
  439. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue2.mjs +129 -0
  440. package/dist/treeshaking/components/header-language-switcher/index.mjs +9 -6
  441. package/dist/treeshaking/components/header-search/OHeaderSearch.vue.mjs +7 -0
  442. package/dist/treeshaking/components/header-search/OHeaderSearch.vue2.mjs +436 -0
  443. package/dist/treeshaking/components/header-search/index.d.ts +13 -13
  444. package/dist/treeshaking/components/header-search/index.mjs +9 -6
  445. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue.mjs +7 -0
  446. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue2.mjs +89 -0
  447. package/dist/treeshaking/components/header-source-code/index.mjs +9 -6
  448. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue.mjs +7 -0
  449. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue2.mjs +86 -0
  450. package/dist/treeshaking/components/header-theme/index.mjs +9 -6
  451. package/dist/treeshaking/components/header-user/OHeaderUser.vue.mjs +8 -0
  452. package/dist/treeshaking/components/header-user/OHeaderUser.vue2.mjs +161 -0
  453. package/dist/treeshaking/components/header-user/index.mjs +9 -6
  454. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue.mjs +7 -0
  455. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue2.mjs +117 -0
  456. package/dist/treeshaking/components/html-viewer/index.mjs +9 -6
  457. package/dist/treeshaking/components/html-viewer/utils.mjs +66 -71
  458. package/dist/treeshaking/components/icon/index.mjs +10 -14
  459. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue.mjs +7 -0
  460. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue2.mjs +21 -0
  461. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue.mjs +7 -0
  462. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue2.mjs +164 -0
  463. package/dist/treeshaking/components/logo-swiper/index.d.ts +11 -11
  464. package/dist/treeshaking/components/logo-swiper/index.mjs +16 -10
  465. package/dist/treeshaking/components/markdown/OMarkdown.vue.mjs +8 -0
  466. package/dist/treeshaking/components/markdown/OMarkdown.vue2.mjs +195 -0
  467. package/dist/treeshaking/components/markdown/OMarkdown2.css +14 -0
  468. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue.mjs +8 -0
  469. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue2.mjs +127 -0
  470. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue.mjs +7 -0
  471. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue2.mjs +76 -0
  472. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue.mjs +7 -0
  473. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue2.mjs +59 -0
  474. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue.mjs +7 -0
  475. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue2.mjs +181 -0
  476. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue.mjs +7 -0
  477. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue2.mjs +57 -0
  478. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue.mjs +7 -0
  479. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue2.mjs +75 -0
  480. package/dist/treeshaking/components/markdown/index.mjs +9 -6
  481. package/dist/treeshaking/components/markdown/replacer/code.mjs +20 -16
  482. package/dist/treeshaking/components/markdown/replacer/h2.mjs +19 -13
  483. package/dist/treeshaking/components/markdown/replacer/img.mjs +19 -13
  484. package/dist/treeshaking/components/markdown/replacer/table.mjs +19 -13
  485. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue.mjs +597 -0
  486. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue3.mjs +5 -0
  487. package/dist/treeshaking/components/meeting/OMeetingForm.css +765 -0
  488. package/dist/treeshaking/components/meeting/OMeetingForm.vue.mjs +1081 -0
  489. package/dist/treeshaking/components/meeting/OMeetingForm.vue4.mjs +6 -0
  490. package/dist/treeshaking/components/meeting/OMeetingForm2.css +358 -0
  491. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue.mjs +415 -0
  492. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue3.mjs +5 -0
  493. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue.mjs +7 -0
  494. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue2.mjs +74 -0
  495. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue.mjs +931 -0
  496. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue4.mjs +6 -0
  497. package/dist/treeshaking/components/meeting/OMeetingMyCalendar2.css +330 -0
  498. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue.d.ts +6 -6
  499. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue.mjs +406 -0
  500. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue3.mjs +5 -0
  501. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue.mjs +221 -0
  502. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue3.mjs +5 -0
  503. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue.mjs +396 -0
  504. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue3.mjs +5 -0
  505. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue.mjs +422 -0
  506. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue3.mjs +5 -0
  507. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue.mjs +132 -0
  508. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue4.mjs +6 -0
  509. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue.mjs +194 -0
  510. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue3.mjs +5 -0
  511. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue.mjs +434 -0
  512. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue4.mjs +6 -0
  513. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles2.css +344 -0
  514. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.css +438 -0
  515. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
  516. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue.mjs +242 -0
  517. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue3.mjs +5 -0
  518. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue.mjs +7 -0
  519. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue2.mjs +93 -0
  520. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue.mjs +152 -0
  521. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue3.mjs +5 -0
  522. package/dist/treeshaking/components/meeting/composables/useMeetingConfig.mjs +94 -130
  523. package/dist/treeshaking/components/meeting/config.d.ts +1 -0
  524. package/dist/treeshaking/components/meeting/config.mjs +20 -19
  525. package/dist/treeshaking/components/meeting/index.d.ts +51 -51
  526. package/dist/treeshaking/components/meeting/index.mjs +67 -35
  527. package/dist/treeshaking/components/meeting/types.d.ts +1 -1
  528. package/dist/treeshaking/components/meeting/types.mjs +17 -15
  529. package/dist/treeshaking/components/meeting/utils.d.ts +1 -0
  530. package/dist/treeshaking/components/meeting/utils.mjs +72 -52
  531. package/dist/treeshaking/components/org/OOrgDesc.vue.mjs +7 -0
  532. package/dist/treeshaking/components/org/OOrgDesc.vue2.mjs +40 -0
  533. package/dist/treeshaking/components/org/OOrgMembers.vue.mjs +7 -0
  534. package/dist/treeshaking/components/org/OOrgMembers.vue2.mjs +108 -0
  535. package/dist/treeshaking/components/org/index.d.ts +9 -9
  536. package/dist/treeshaking/components/org/index.mjs +16 -10
  537. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue.mjs +95 -0
  538. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue2.mjs +4 -0
  539. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue.mjs +7 -0
  540. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue2.mjs +107 -0
  541. package/dist/treeshaking/components/recursion-menu/index.d.ts +3 -3
  542. package/dist/treeshaking/components/recursion-menu/index.mjs +16 -11
  543. package/dist/treeshaking/components/recursion-menu/types.mjs +4 -4
  544. package/dist/treeshaking/components/search/OSearchInput.vue.mjs +7 -0
  545. package/dist/treeshaking/components/search/OSearchInput.vue2.mjs +382 -0
  546. package/dist/treeshaking/components/search/composables/useImageSearch.mjs +132 -114
  547. package/dist/treeshaking/components/search/composables/useKeywordHighlight.mjs +26 -33
  548. package/dist/treeshaking/components/search/composables/useSearchHistory.mjs +56 -53
  549. package/dist/treeshaking/components/search/index.d.ts +11 -11
  550. package/dist/treeshaking/components/search/index.mjs +9 -6
  551. package/dist/treeshaking/components/search/internal/HighlightText.vue.mjs +7 -0
  552. package/dist/treeshaking/components/search/internal/HighlightText.vue2.mjs +33 -0
  553. package/dist/treeshaking/components/search/internal/SearchImageInput.vue.mjs +8 -0
  554. package/dist/treeshaking/components/search/internal/SearchImageInput.vue2.mjs +305 -0
  555. package/dist/treeshaking/components/search/internal/SearchPanel.vue.mjs +7 -0
  556. package/dist/treeshaking/components/search/internal/SearchPanel.vue2.mjs +255 -0
  557. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue.mjs +7 -0
  558. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue2.mjs +214 -0
  559. package/dist/treeshaking/components/search-doc-result/index.mjs +9 -6
  560. package/dist/treeshaking/components/search-result/OSearchResult.vue.mjs +7 -0
  561. package/dist/treeshaking/components/search-result/OSearchResult.vue2.mjs +185 -0
  562. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue.d.ts +24 -24
  563. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue.mjs +7 -0
  564. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue2.mjs +112 -0
  565. package/dist/treeshaking/components/search-result/OSearchResultItem.vue.mjs +7 -0
  566. package/dist/treeshaking/components/search-result/OSearchResultItem.vue2.mjs +118 -0
  567. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue.mjs +7 -0
  568. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue2.mjs +29 -0
  569. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue.mjs +7 -0
  570. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue2.mjs +171 -0
  571. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue.mjs +7 -0
  572. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue2.mjs +185 -0
  573. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue.mjs +7 -0
  574. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue2.mjs +55 -0
  575. package/dist/treeshaking/components/search-result/index.d.ts +31 -31
  576. package/dist/treeshaking/components/search-result/index.mjs +23 -14
  577. package/dist/treeshaking/components/section/OSection.vue.mjs +7 -0
  578. package/dist/treeshaking/components/section/OSection.vue2.mjs +93 -0
  579. package/dist/treeshaking/components/section/index.mjs +9 -6
  580. package/dist/treeshaking/components/sig/OSigDetail.vue.mjs +262 -0
  581. package/dist/treeshaking/components/sig/OSigDetail.vue3.mjs +5 -0
  582. package/dist/treeshaking/components/sig/OSigList.vue.mjs +524 -0
  583. package/dist/treeshaking/components/sig/OSigList.vue3.mjs +5 -0
  584. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue.mjs +90 -0
  585. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue3.mjs +5 -0
  586. package/dist/treeshaking/components/sig/components/OSigItem.css +373 -0
  587. package/dist/treeshaking/components/sig/components/OSigItem.vue.mjs +212 -0
  588. package/dist/treeshaking/components/sig/components/OSigItem.vue3.mjs +5 -0
  589. package/dist/treeshaking/components/sig/components/OSigMember.vue.mjs +274 -0
  590. package/dist/treeshaking/components/sig/components/OSigMember.vue3.mjs +5 -0
  591. package/dist/treeshaking/components/sig/components/OSigRepo.vue.mjs +191 -0
  592. package/dist/treeshaking/components/sig/components/OSigRepo.vue3.mjs +5 -0
  593. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue.mjs +328 -0
  594. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue3.mjs +5 -0
  595. package/dist/treeshaking/components/sig/components/utils.mjs +38 -61
  596. package/dist/treeshaking/components/sig/index.d.ts +15 -15
  597. package/dist/treeshaking/components/sig/index.mjs +18 -10
  598. package/dist/treeshaking/components/summit/OSummit.vue.mjs +7 -0
  599. package/dist/treeshaking/components/summit/OSummit.vue2.mjs +60 -0
  600. package/dist/treeshaking/components/summit/OSummitIntro.vue.mjs +7 -0
  601. package/dist/treeshaking/components/summit/OSummitIntro.vue2.mjs +26 -0
  602. package/dist/treeshaking/components/summit/OSummitLive.vue.mjs +7 -0
  603. package/dist/treeshaking/components/summit/OSummitLive.vue2.mjs +171 -0
  604. package/dist/treeshaking/components/summit/OSummitSchedule.vue.mjs +8 -0
  605. package/dist/treeshaking/components/summit/OSummitSchedule.vue2.mjs +317 -0
  606. package/dist/treeshaking/components/summit/components/OSummitTabs.vue.mjs +7 -0
  607. package/dist/treeshaking/components/summit/components/OSummitTabs.vue2.mjs +157 -0
  608. package/dist/treeshaking/components/summit/index.d.ts +12 -12
  609. package/dist/treeshaking/components/summit/index.mjs +30 -18
  610. package/dist/treeshaking/components/summit/utils.mjs +88 -103
  611. package/dist/treeshaking/components/user-center/OAccountSecurity.css +253 -0
  612. package/dist/treeshaking/components/user-center/OAccountSecurity.vue.mjs +7 -0
  613. package/dist/treeshaking/components/user-center/OAccountSecurity.vue2.mjs +308 -0
  614. package/dist/treeshaking/components/user-center/OAccountSetting.css +284 -0
  615. package/dist/treeshaking/components/user-center/OAccountSetting.vue.mjs +7 -0
  616. package/dist/treeshaking/components/user-center/OAccountSetting.vue2.mjs +395 -0
  617. package/dist/treeshaking/components/user-center/OAppHeader.vue.mjs +7 -0
  618. package/dist/treeshaking/components/user-center/OAppHeader.vue2.mjs +207 -0
  619. package/dist/treeshaking/components/user-center/OAsideBar.vue.mjs +7 -0
  620. package/dist/treeshaking/components/user-center/OAsideBar.vue2.mjs +108 -0
  621. package/dist/treeshaking/components/user-center/OLayout.vue.mjs +7 -0
  622. package/dist/treeshaking/components/user-center/OLayout.vue2.mjs +27 -0
  623. package/dist/treeshaking/components/user-center/OTheAccountManage.vue.mjs +7 -0
  624. package/dist/treeshaking/components/user-center/OTheAccountManage.vue2.mjs +26 -0
  625. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue.mjs +7 -0
  626. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue2.mjs +103 -0
  627. package/dist/treeshaking/components/user-center/OTheMeeting.vue.mjs +7 -0
  628. package/dist/treeshaking/components/user-center/OTheMeeting.vue2.mjs +128 -0
  629. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue.mjs +7 -0
  630. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue2.mjs +388 -0
  631. package/dist/treeshaking/components/user-center/OUserInfo.vue.mjs +9 -0
  632. package/dist/treeshaking/components/user-center/OUserInfo.vue2.mjs +562 -0
  633. package/dist/treeshaking/components/user-center/const/common.const.mjs +30 -22
  634. package/dist/treeshaking/components/user-center/index.d.ts +18 -18
  635. package/dist/treeshaking/components/user-center/index.mjs +72 -42
  636. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue.mjs +7 -0
  637. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue2.mjs +446 -0
  638. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue.mjs +7 -0
  639. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue2.mjs +41 -0
  640. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue.mjs +7 -0
  641. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue2.mjs +148 -0
  642. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue.mjs +67 -0
  643. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue2.mjs +4 -0
  644. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue.mjs +8 -0
  645. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue2.mjs +325 -0
  646. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue.mjs +8 -0
  647. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue2.mjs +149 -0
  648. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue.mjs +8 -0
  649. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue2.mjs +162 -0
  650. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue.mjs +7 -0
  651. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue2.mjs +30 -0
  652. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue.mjs +7 -0
  653. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue2.mjs +461 -0
  654. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue.mjs +7 -0
  655. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue2.mjs +147 -0
  656. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue.mjs +7 -0
  657. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue2.mjs +117 -0
  658. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue.mjs +7 -0
  659. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue2.mjs +107 -0
  660. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue.mjs +8 -0
  661. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue2.mjs +455 -0
  662. package/dist/treeshaking/components/user-center/rolesMap.mjs +21 -16
  663. package/dist/treeshaking/components/user-center/utils/helper.mjs +5 -7
  664. package/dist/treeshaking/components/user-center/utils/rules.mjs +136 -99
  665. package/dist/treeshaking/components/user-center/utils/utils.mjs +38 -30
  666. package/dist/treeshaking/components/user-center/verify/Verify.vue.mjs +61 -0
  667. package/dist/treeshaking/components/user-center/verify/Verify.vue2.mjs +83 -0
  668. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue.mjs +122 -0
  669. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue2.mjs +367 -0
  670. package/dist/treeshaking/components/user-center/verify/utils/ase.mjs +11 -15
  671. package/dist/treeshaking/components/user-center/verify/utils/util.mjs +32 -19
  672. package/dist/treeshaking/components/video/OVideoDetail.vue.mjs +318 -0
  673. package/dist/treeshaking/components/video/OVideoDetail.vue3.mjs +5 -0
  674. package/dist/treeshaking/components/video/index.d.ts +3 -3
  675. package/dist/treeshaking/components/video/index.mjs +10 -6
  676. package/dist/treeshaking/i18n/en.mjs +603 -595
  677. package/dist/treeshaking/i18n/index.mjs +45 -41
  678. package/dist/treeshaking/i18n/zh.mjs +606 -598
  679. package/dist/treeshaking/index.mjs +87 -7
  680. package/dist/treeshaking/shared/anchor.mjs +8 -3
  681. package/dist/treeshaking/shared/provide.mjs +4 -3
  682. package/dist/treeshaking/shared/theme.mjs +23 -22
  683. package/package.json +1 -1
  684. package/dist/chunk-element-plus.cjs.js +0 -1
  685. package/dist/chunk-element-plus.es.js +0 -1434
  686. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/codec-helpers.js.mjs +0 -1
  687. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/opus-helpers.js.mjs +0 -10
  688. package/dist/treeshaking/_virtual/_rolldown/runtime.mjs +0 -27
  689. package/dist/treeshaking/_virtual/cropperjs/dist/cropper.js.mjs +0 -2575
  690. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/NotificationFactories.js.mjs +0 -18
  691. package/dist/treeshaking/_virtual/~icons/components/icon-address.mjs +0 -21
  692. package/dist/treeshaking/_virtual/~icons/components/icon-anchor-expand.mjs +0 -20
  693. package/dist/treeshaking/_virtual/~icons/components/icon-anchor.mjs +0 -22
  694. package/dist/treeshaking/_virtual/~icons/components/icon-arrow-left.mjs +0 -20
  695. package/dist/treeshaking/_virtual/~icons/components/icon-avatar-line.mjs +0 -20
  696. package/dist/treeshaking/_virtual/~icons/components/icon-caret-left.mjs +0 -20
  697. package/dist/treeshaking/_virtual/~icons/components/icon-caret-right.mjs +0 -20
  698. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-down.mjs +0 -20
  699. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-right.mjs +0 -20
  700. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-up.mjs +0 -20
  701. package/dist/treeshaking/_virtual/~icons/components/icon-close.mjs +0 -20
  702. package/dist/treeshaking/_virtual/~icons/components/icon-copy.mjs +0 -20
  703. package/dist/treeshaking/_virtual/~icons/components/icon-delete-hover.mjs +0 -23
  704. package/dist/treeshaking/_virtual/~icons/components/icon-delete.mjs +0 -17
  705. package/dist/treeshaking/_virtual/~icons/components/icon-download.mjs +0 -17
  706. package/dist/treeshaking/_virtual/~icons/components/icon-edit.mjs +0 -40
  707. package/dist/treeshaking/_virtual/~icons/components/icon-email.mjs +0 -21
  708. package/dist/treeshaking/_virtual/~icons/components/icon-expand.mjs +0 -21
  709. package/dist/treeshaking/_virtual/~icons/components/icon-forum.mjs +0 -21
  710. package/dist/treeshaking/_virtual/~icons/components/icon-header-back.mjs +0 -20
  711. package/dist/treeshaking/_virtual/~icons/components/icon-header-menu.mjs +0 -20
  712. package/dist/treeshaking/_virtual/~icons/components/icon-header-search.mjs +0 -20
  713. package/dist/treeshaking/_virtual/~icons/components/icon-image-upload.mjs +0 -20
  714. package/dist/treeshaking/_virtual/~icons/components/icon-image-zoomin.mjs +0 -20
  715. package/dist/treeshaking/_virtual/~icons/components/icon-like.mjs +0 -20
  716. package/dist/treeshaking/_virtual/~icons/components/icon-link.mjs +0 -30
  717. package/dist/treeshaking/_virtual/~icons/components/icon-locale.mjs +0 -20
  718. package/dist/treeshaking/_virtual/~icons/components/icon-menu-fold.mjs +0 -20
  719. package/dist/treeshaking/_virtual/~icons/components/icon-menu-unfold.mjs +0 -20
  720. package/dist/treeshaking/_virtual/~icons/components/icon-moon.mjs +0 -20
  721. package/dist/treeshaking/_virtual/~icons/components/icon-more.mjs +0 -19
  722. package/dist/treeshaking/_virtual/~icons/components/icon-next.mjs +0 -22
  723. package/dist/treeshaking/_virtual/~icons/components/icon-notice.mjs +0 -20
  724. package/dist/treeshaking/_virtual/~icons/components/icon-outlink.mjs +0 -20
  725. package/dist/treeshaking/_virtual/~icons/components/icon-refresh.mjs +0 -21
  726. package/dist/treeshaking/_virtual/~icons/components/icon-relative-search.mjs +0 -21
  727. package/dist/treeshaking/_virtual/~icons/components/icon-search.mjs +0 -17
  728. package/dist/treeshaking/_virtual/~icons/components/icon-smile.mjs +0 -21
  729. package/dist/treeshaking/_virtual/~icons/components/icon-star.mjs +0 -20
  730. package/dist/treeshaking/_virtual/~icons/components/icon-sun.mjs +0 -20
  731. package/dist/treeshaking/_virtual/~icons/components/icon-time.mjs +0 -20
  732. package/dist/treeshaking/_virtual/~icons/components/icon-tips.mjs +0 -17
  733. package/dist/treeshaking/_virtual/~icons/components/icon-unexpand.mjs +0 -22
  734. package/dist/treeshaking/_virtual/~icons/components/icon-unlike.mjs +0 -20
  735. package/dist/treeshaking/_virtual/~icons/components/icon-working.mjs +0 -17
  736. package/dist/treeshaking/_virtual/~icons/events/icon-checked.mjs +0 -20
  737. package/dist/treeshaking/_virtual/~icons/events/icon-competition.mjs +0 -30
  738. package/dist/treeshaking/_virtual/~icons/events/icon-events.mjs +0 -30
  739. package/dist/treeshaking/_virtual/~icons/events/icon-release.mjs +0 -30
  740. package/dist/treeshaking/_virtual/~icons/events/icon-summit.mjs +0 -30
  741. package/dist/treeshaking/_virtual/~icons/meeting/icon-all.mjs +0 -20
  742. package/dist/treeshaking/_virtual/~icons/meeting/icon-copy.mjs +0 -21
  743. package/dist/treeshaking/_virtual/~icons/meeting/icon-event.mjs +0 -21
  744. package/dist/treeshaking/_virtual/~icons/meeting/icon-help.mjs +0 -21
  745. package/dist/treeshaking/_virtual/~icons/meeting/icon-meet.mjs +0 -20
  746. package/dist/treeshaking/_virtual/~icons/meeting/icon-playing.mjs +0 -35
  747. package/dist/treeshaking/_virtual/~icons/meeting/icon-speaker.mjs +0 -17
  748. package/dist/treeshaking/_virtual/~icons/meeting/icon-summit.mjs +0 -21
  749. package/dist/treeshaking/_virtual/~icons/meeting/icon-tip.mjs +0 -21
  750. package/dist/treeshaking/_virtual/~icons/sig/icon-atomgit.mjs +0 -24
  751. package/dist/treeshaking/_virtual/~icons/sig/icon-gitee.mjs +0 -20
  752. package/dist/treeshaking/_virtual/~icons/sig/icon-mail.mjs +0 -17
  753. package/dist/treeshaking/_virtual/~icons/sig/icon-search.mjs +0 -17
  754. package/dist/treeshaking/_virtual/~icons/sig/icon-user.mjs +0 -17
  755. package/dist/treeshaking/_virtual/~icons/sig/sig-space.mjs +0 -20
  756. package/dist/treeshaking/_virtual/~icons/user-center/icon-add-dark.mjs +0 -42
  757. package/dist/treeshaking/_virtual/~icons/user-center/icon-add-new.mjs +0 -17
  758. package/dist/treeshaking/_virtual/~icons/user-center/icon-check.mjs +0 -20
  759. package/dist/treeshaking/_virtual/~icons/user-center/icon-chevron-right.mjs +0 -20
  760. package/dist/treeshaking/_virtual/~icons/user-center/icon-close.mjs +0 -20
  761. package/dist/treeshaking/_virtual/~icons/user-center/icon-done.mjs +0 -20
  762. package/dist/treeshaking/_virtual/~icons/user-center/icon-edit-new.mjs +0 -17
  763. package/dist/treeshaking/_virtual/~icons/user-center/icon-email.mjs +0 -22
  764. package/dist/treeshaking/_virtual/~icons/user-center/icon-eye-off.mjs +0 -20
  765. package/dist/treeshaking/_virtual/~icons/user-center/icon-eye.mjs +0 -20
  766. package/dist/treeshaking/_virtual/~icons/user-center/icon-gitcode-new.mjs +0 -29
  767. package/dist/treeshaking/_virtual/~icons/user-center/icon-gitee.mjs +0 -20
  768. package/dist/treeshaking/_virtual/~icons/user-center/icon-github.mjs +0 -20
  769. package/dist/treeshaking/_virtual/~icons/user-center/icon-loading.mjs +0 -23
  770. package/dist/treeshaking/_virtual/~icons/user-center/icon-minus-dark.mjs +0 -64
  771. package/dist/treeshaking/_virtual/~icons/user-center/icon-minus-new.mjs +0 -17
  772. package/dist/treeshaking/_virtual/~icons/user-center/icon-openatom.mjs +0 -20
  773. package/dist/treeshaking/_virtual/~icons/user-center/icon-phone.mjs +0 -22
  774. package/dist/treeshaking/_virtual/~icons/user-center/icon-refresh.mjs +0 -45
  775. package/dist/treeshaking/_virtual/~icons/user-center/icon-setting.mjs +0 -20
  776. package/dist/treeshaking/_virtual/~icons/user-center/icon-tips.mjs +0 -30
  777. package/dist/treeshaking/_virtual/~icons/user-center/icon-wechat.mjs +0 -18
  778. package/dist/treeshaking/_virtual/~icons/video/icon-material.mjs +0 -21
  779. package/dist/treeshaking/_virtual/~icons/video/icon-video.mjs +0 -30
  780. package/dist/treeshaking/assets/meeting/empty.mjs +0 -3
  781. package/dist/treeshaking/assets/meeting/transparent.mjs +0 -3
  782. package/dist/treeshaking/assets/search/search-empty.mjs +0 -3
  783. package/dist/treeshaking/assets/svg-icons/icon-zoom.mjs +0 -3
  784. package/dist/treeshaking/assets/user-center/images/avatar.mjs +0 -3
  785. package/dist/treeshaking/assets/user-center/images/default-user-photo.mjs +0 -3
  786. package/dist/treeshaking/assets/user-center/images/left-arrow-dark.mjs +0 -3
  787. package/dist/treeshaking/assets/user-center/images/left-arrow-light.mjs +0 -3
  788. package/dist/treeshaking/assets/user-center/images/noData.mjs +0 -3
  789. package/dist/treeshaking/assets/user-center/images/warning-dark.mjs +0 -3
  790. package/dist/treeshaking/assets/user-center/images/warning-light.mjs +0 -3
  791. package/dist/treeshaking/components/activity/OActivityApproval.mjs +0 -6
  792. package/dist/treeshaking/components/activity/OActivityApproval.vue_vue_type_script_setup_true_lang.mjs +0 -586
  793. package/dist/treeshaking/components/activity/OActivityApproval.vue_vue_type_style_index_1_lang.css +0 -40
  794. package/dist/treeshaking/components/activity/OActivityForm.mjs +0 -6
  795. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_script_setup_true_lang.mjs +0 -517
  796. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_style_index_0_lang.css +0 -364
  797. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_style_index_1_lang.css +0 -327
  798. package/dist/treeshaking/components/activity/OActivityMyCalendar.mjs +0 -6
  799. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue_vue_type_script_setup_true_lang.mjs +0 -622
  800. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue_vue_type_style_index_1_lang.css +0 -318
  801. package/dist/treeshaking/components/anchor-bar/OAnchorBar.mjs +0 -6
  802. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue_vue_type_script_setup_true_lang.mjs +0 -84
  803. package/dist/treeshaking/components/article/OArticle.mjs +0 -6
  804. package/dist/treeshaking/components/article/OArticle.vue_vue_type_script_setup_true_lang.mjs +0 -133
  805. package/dist/treeshaking/components/article/OArticleList.mjs +0 -5
  806. package/dist/treeshaking/components/article/OArticleList.vue_vue_type_script_setup_true_lang.mjs +0 -182
  807. package/dist/treeshaking/components/article/OArticleList.vue_vue_type_style_index_0_lang.css +0 -233
  808. package/dist/treeshaking/components/article/components/ArticleTitle.mjs +0 -6
  809. package/dist/treeshaking/components/article/components/ArticleTitle.vue_vue_type_script_setup_true_lang.mjs +0 -77
  810. package/dist/treeshaking/components/article/components/DocTitle.mjs +0 -6
  811. package/dist/treeshaking/components/article/components/DocTitle.vue_vue_type_script_setup_true_lang.mjs +0 -219
  812. package/dist/treeshaking/components/article/components/DocTitle.vue_vue_type_style_index_0_scoped_ea84d56c_lang.css +0 -246
  813. package/dist/treeshaking/components/article-anchor/OArticleAnchor.mjs +0 -6
  814. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue_vue_type_script_setup_true_lang.mjs +0 -241
  815. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue_vue_type_style_index_0_scoped_6e032ecb_lang.css +0 -18
  816. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.mjs +0 -6
  817. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue_vue_type_script_setup_true_lang.mjs +0 -27
  818. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue_vue_type_style_index_0_scoped_c0fc5e57_lang.css +0 -11
  819. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.mjs +0 -6
  820. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue_vue_type_script_setup_true_lang.mjs +0 -130
  821. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue_vue_type_style_index_0_scoped_648619c2_lang.css +0 -47
  822. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.mjs +0 -6
  823. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue_vue_type_script_setup_true_lang.mjs +0 -54
  824. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.mjs +0 -6
  825. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue_vue_type_script_setup_true_lang.mjs +0 -27
  826. package/dist/treeshaking/components/article-pagination/OArticlePagination.mjs +0 -6
  827. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue_vue_type_script_setup_true_lang.mjs +0 -82
  828. package/dist/treeshaking/components/banner/OBanner.mjs +0 -7
  829. package/dist/treeshaking/components/banner/OBanner.vue_vue_type_script_setup_true_lang.mjs +0 -129
  830. package/dist/treeshaking/components/banner/OBannerContent.mjs +0 -6
  831. package/dist/treeshaking/components/banner/OBannerContent.vue_vue_type_script_setup_true_lang.mjs +0 -93
  832. package/dist/treeshaking/components/brand/OBrandFile.mjs +0 -6
  833. package/dist/treeshaking/components/brand/OBrandFile.vue_vue_type_script_setup_true_lang.mjs +0 -59
  834. package/dist/treeshaking/components/brand/OBrandLogo.mjs +0 -7
  835. package/dist/treeshaking/components/brand/OBrandLogo.vue_vue_type_script_setup_true_lang.mjs +0 -101
  836. package/dist/treeshaking/components/brand/OBrandStandard.mjs +0 -6
  837. package/dist/treeshaking/components/brand/OBrandStandard.vue_vue_type_script_setup_true_lang.mjs +0 -51
  838. package/dist/treeshaking/components/common/AppAvatar.mjs +0 -6
  839. package/dist/treeshaking/components/common/AppAvatar.vue_vue_type_script_setup_true_lang.mjs +0 -73
  840. package/dist/treeshaking/components/common/ClientOnly.mjs +0 -4
  841. package/dist/treeshaking/components/common/ClientOnly.vue_vue_type_script_setup_true_lang.mjs +0 -15
  842. package/dist/treeshaking/components/common/ContentWrapper.mjs +0 -6
  843. package/dist/treeshaking/components/common/ContentWrapper.vue_vue_type_script_setup_true_lang.mjs +0 -40
  844. package/dist/treeshaking/components/common/TooltipText.mjs +0 -5
  845. package/dist/treeshaking/components/common/TooltipText.vue_vue_type_script_setup_true_lang.mjs +0 -92
  846. package/dist/treeshaking/components/common/TooltipText.vue_vue_type_style_index_0_lang.css +0 -35
  847. package/dist/treeshaking/components/common/WordAvatar.mjs +0 -5
  848. package/dist/treeshaking/components/common/WordAvatar.vue_vue_type_script_setup_true_lang.mjs +0 -77
  849. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.mjs +0 -4
  850. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue_vue_type_script_setup_true_lang.mjs +0 -30
  851. package/dist/treeshaking/components/cookie-notice/OCookieNotice.mjs +0 -7
  852. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue_vue_type_script_setup_true_lang.mjs +0 -280
  853. package/dist/treeshaking/components/doc-layout/ODocLayout.mjs +0 -6
  854. package/dist/treeshaking/components/doc-layout/ODocLayout.vue_vue_type_script_setup_true_lang.mjs +0 -156
  855. package/dist/treeshaking/components/doc-layout/ODocLayout.vue_vue_type_style_index_0_scoped_3d4751c0_lang.css +0 -274
  856. package/dist/treeshaking/components/element-plus/OElCookieNotice.mjs +0 -7
  857. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_script_setup_true_lang.mjs +0 -288
  858. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_style_index_0_lang.css +0 -303
  859. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_style_index_1_scoped_667a5ab4_lang.css +0 -688
  860. package/dist/treeshaking/components/empty/404.mjs +0 -3
  861. package/dist/treeshaking/components/empty/404_dark.mjs +0 -3
  862. package/dist/treeshaking/components/empty/OEmpty.mjs +0 -6
  863. package/dist/treeshaking/components/empty/OEmpty.vue_vue_type_script_setup_true_lang.mjs +0 -39
  864. package/dist/treeshaking/components/events/OEventsApply.mjs +0 -5
  865. package/dist/treeshaking/components/events/OEventsApply.vue_vue_type_script_setup_true_lang.mjs +0 -64
  866. package/dist/treeshaking/components/events/OEventsCalendar.mjs +0 -5
  867. package/dist/treeshaking/components/events/OEventsCalendar.vue_vue_type_script_setup_true_lang.mjs +0 -205
  868. package/dist/treeshaking/components/events/OEventsList.mjs +0 -5
  869. package/dist/treeshaking/components/events/OEventsList.vue_vue_type_script_setup_true_lang.mjs +0 -195
  870. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.mjs +0 -6
  871. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue_vue_type_script_setup_true_lang.mjs +0 -174
  872. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.mjs +0 -6
  873. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue_vue_type_script_setup_true_lang.mjs +0 -276
  874. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.mjs +0 -4
  875. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue_vue_type_script_setup_true_lang.mjs +0 -102
  876. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.mjs +0 -6
  877. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue_vue_type_script_setup_true_lang.mjs +0 -112
  878. package/dist/treeshaking/components/float-poster/OFloatPoster.mjs +0 -6
  879. package/dist/treeshaking/components/float-poster/OFloatPoster.vue_vue_type_script_setup_true_lang.mjs +0 -77
  880. package/dist/treeshaking/components/footer/OFooter.mjs +0 -6
  881. package/dist/treeshaking/components/footer/OFooter.vue_vue_type_script_setup_true_lang.mjs +0 -78
  882. package/dist/treeshaking/components/footer/components/FooterList.mjs +0 -6
  883. package/dist/treeshaking/components/footer/components/FooterList.vue_vue_type_script_setup_true_lang.mjs +0 -150
  884. package/dist/treeshaking/components/footer/components/FooterSimple.mjs +0 -6
  885. package/dist/treeshaking/components/footer/components/FooterSimple.vue_vue_type_script_setup_true_lang.mjs +0 -100
  886. package/dist/treeshaking/components/header/OHeader.mjs +0 -6
  887. package/dist/treeshaking/components/header/OHeader.vue_vue_type_script_setup_true_lang.mjs +0 -256
  888. package/dist/treeshaking/components/header/OHeaderMobile.mjs +0 -6
  889. package/dist/treeshaking/components/header/OHeaderMobile.vue_vue_type_script_setup_true_lang.mjs +0 -121
  890. package/dist/treeshaking/components/header/components/HeaderContent.mjs +0 -6
  891. package/dist/treeshaking/components/header/components/HeaderContent.vue_vue_type_script_setup_true_lang.mjs +0 -286
  892. package/dist/treeshaking/components/header/components/HeaderFlatten.mjs +0 -6
  893. package/dist/treeshaking/components/header/components/HeaderFlatten.vue_vue_type_script_setup_true_lang.mjs +0 -247
  894. package/dist/treeshaking/components/header/components/HeaderNav.mjs +0 -6
  895. package/dist/treeshaking/components/header/components/HeaderNav.vue_vue_type_script_setup_true_lang.mjs +0 -210
  896. package/dist/treeshaking/components/header/components/HeaderNavMobile.mjs +0 -6
  897. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue_vue_type_script_setup_true_lang.mjs +0 -197
  898. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.mjs +0 -7
  899. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue_vue_type_script_setup_true_lang.mjs +0 -109
  900. package/dist/treeshaking/components/header-search/OHeaderSearch.mjs +0 -6
  901. package/dist/treeshaking/components/header-search/OHeaderSearch.vue_vue_type_script_setup_true_lang.mjs +0 -434
  902. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.mjs +0 -6
  903. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue_vue_type_script_setup_true_lang.mjs +0 -73
  904. package/dist/treeshaking/components/header-theme/OHeaderTheme.mjs +0 -6
  905. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue_vue_type_script_setup_true_lang.mjs +0 -75
  906. package/dist/treeshaking/components/header-user/OHeaderUser.mjs +0 -7
  907. package/dist/treeshaking/components/header-user/OHeaderUser.vue_vue_type_script_setup_true_lang.mjs +0 -124
  908. package/dist/treeshaking/components/html-viewer/OHtmlViewer.mjs +0 -6
  909. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue_vue_type_script_setup_true_lang.mjs +0 -87
  910. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.mjs +0 -6
  911. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue_vue_type_script_setup_true_lang.mjs +0 -15
  912. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.mjs +0 -6
  913. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue_vue_type_script_setup_true_lang.mjs +0 -145
  914. package/dist/treeshaking/components/markdown/OMarkdown.mjs +0 -7
  915. package/dist/treeshaking/components/markdown/OMarkdown.vue_vue_type_script_setup_true_lang.mjs +0 -180
  916. package/dist/treeshaking/components/markdown/OMarkdown.vue_vue_type_style_index_1_scoped_4be4e234_lang.css +0 -14
  917. package/dist/treeshaking/components/markdown/components/MarkdownCode.mjs +0 -7
  918. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue_vue_type_script_setup_true_lang.mjs +0 -94
  919. package/dist/treeshaking/components/markdown/components/MarkdownImage.mjs +0 -6
  920. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue_vue_type_script_setup_true_lang.mjs +0 -67
  921. package/dist/treeshaking/components/markdown/components/MarkdownTable.mjs +0 -6
  922. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue_vue_type_script_setup_true_lang.mjs +0 -44
  923. package/dist/treeshaking/components/markdown/components/MarkdownTableData.mjs +0 -6
  924. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue_vue_type_script_setup_true_lang.mjs +0 -145
  925. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.mjs +0 -6
  926. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue_vue_type_script_setup_true_lang.mjs +0 -45
  927. package/dist/treeshaking/components/markdown/components/MarkdownTitle.mjs +0 -6
  928. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue_vue_type_script_setup_true_lang.mjs +0 -46
  929. package/dist/treeshaking/components/meeting/OMeetingCalendar.mjs +0 -5
  930. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue_vue_type_script_setup_true_lang.mjs +0 -470
  931. package/dist/treeshaking/components/meeting/OMeetingForm.mjs +0 -6
  932. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_script_setup_true_lang.mjs +0 -856
  933. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_style_index_0_lang.css +0 -764
  934. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_style_index_1_lang.css +0 -358
  935. package/dist/treeshaking/components/meeting/OMeetingMinutes.mjs +0 -5
  936. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue_vue_type_script_setup_true_lang.mjs +0 -307
  937. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.mjs +0 -6
  938. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue_vue_type_script_setup_true_lang.mjs +0 -52
  939. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.mjs +0 -6
  940. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue_vue_type_script_setup_true_lang.mjs +0 -661
  941. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue_vue_type_style_index_1_lang.css +0 -330
  942. package/dist/treeshaking/components/meeting/OMeetingPlayback.mjs +0 -5
  943. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue_vue_type_script_setup_true_lang.mjs +0 -328
  944. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.mjs +0 -5
  945. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue_vue_type_script_setup_true_lang.mjs +0 -189
  946. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.mjs +0 -5
  947. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue_vue_type_script_setup_true_lang.mjs +0 -329
  948. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.mjs +0 -5
  949. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue_vue_type_script_setup_true_lang.mjs +0 -281
  950. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.mjs +0 -6
  951. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue_vue_type_script_setup_true_lang.mjs +0 -112
  952. package/dist/treeshaking/components/meeting/components/OMeetingDetail.mjs +0 -5
  953. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue_vue_type_script_setup_true_lang.mjs +0 -245
  954. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.mjs +0 -6
  955. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue_vue_type_script_setup_true_lang.mjs +0 -314
  956. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue_vue_type_style_index_1_lang.css +0 -344
  957. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.mjs +0 -5
  958. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue_vue_type_script_setup_true_lang.mjs +0 -208
  959. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue_vue_type_style_index_0_lang.css +0 -438
  960. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.mjs +0 -6
  961. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue_vue_type_script_setup_true_lang.mjs +0 -72
  962. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.mjs +0 -5
  963. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue_vue_type_script_setup_true_lang.mjs +0 -118
  964. package/dist/treeshaking/components/org/OOrgDesc.mjs +0 -6
  965. package/dist/treeshaking/components/org/OOrgDesc.vue_vue_type_script_setup_true_lang.mjs +0 -39
  966. package/dist/treeshaking/components/org/OOrgMembers.mjs +0 -6
  967. package/dist/treeshaking/components/org/OOrgMembers.vue_vue_type_script_setup_true_lang.mjs +0 -86
  968. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.mjs +0 -4
  969. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue_vue_type_script_setup_true_lang.mjs +0 -85
  970. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.mjs +0 -6
  971. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue_vue_type_script_setup_true_lang.mjs +0 -103
  972. package/dist/treeshaking/components/search/OSearchInput.mjs +0 -6
  973. package/dist/treeshaking/components/search/OSearchInput.vue_vue_type_script_setup_true_lang.mjs +0 -407
  974. package/dist/treeshaking/components/search/internal/HighlightText.mjs +0 -6
  975. package/dist/treeshaking/components/search/internal/HighlightText.vue_vue_type_script_setup_true_lang.mjs +0 -34
  976. package/dist/treeshaking/components/search/internal/SearchImageInput.mjs +0 -7
  977. package/dist/treeshaking/components/search/internal/SearchImageInput.vue_vue_type_script_setup_true_lang.mjs +0 -291
  978. package/dist/treeshaking/components/search/internal/SearchPanel.mjs +0 -6
  979. package/dist/treeshaking/components/search/internal/SearchPanel.vue_vue_type_script_setup_true_lang.mjs +0 -221
  980. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.mjs +0 -6
  981. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue_vue_type_script_setup_true_lang.mjs +0 -171
  982. package/dist/treeshaking/components/search-result/OSearchResult.mjs +0 -6
  983. package/dist/treeshaking/components/search-result/OSearchResult.vue_vue_type_script_setup_true_lang.mjs +0 -154
  984. package/dist/treeshaking/components/search-result/OSearchResultHeader.mjs +0 -6
  985. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue_vue_type_script_setup_true_lang.mjs +0 -102
  986. package/dist/treeshaking/components/search-result/OSearchResultItem.mjs +0 -6
  987. package/dist/treeshaking/components/search-result/OSearchResultItem.vue_vue_type_script_setup_true_lang.mjs +0 -89
  988. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.mjs +0 -6
  989. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue_vue_type_script_setup_true_lang.mjs +0 -25
  990. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.mjs +0 -6
  991. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue_vue_type_script_setup_true_lang.mjs +0 -128
  992. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.mjs +0 -6
  993. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue_vue_type_script_setup_true_lang.mjs +0 -132
  994. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.mjs +0 -6
  995. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue_vue_type_script_setup_true_lang.mjs +0 -43
  996. package/dist/treeshaking/components/section/OSection.mjs +0 -6
  997. package/dist/treeshaking/components/section/OSection.vue_vue_type_script_setup_true_lang.mjs +0 -67
  998. package/dist/treeshaking/components/sig/OSigDetail.mjs +0 -5
  999. package/dist/treeshaking/components/sig/OSigDetail.vue_vue_type_script_setup_true_lang.mjs +0 -189
  1000. package/dist/treeshaking/components/sig/OSigList.mjs +0 -5
  1001. package/dist/treeshaking/components/sig/OSigList.vue_vue_type_script_setup_true_lang.mjs +0 -513
  1002. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.mjs +0 -5
  1003. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue_vue_type_script_setup_true_lang.mjs +0 -69
  1004. package/dist/treeshaking/components/sig/components/OSigItem.mjs +0 -5
  1005. package/dist/treeshaking/components/sig/components/OSigItem.vue_vue_type_script_setup_true_lang.mjs +0 -154
  1006. package/dist/treeshaking/components/sig/components/OSigItem.vue_vue_type_style_index_0_lang.css +0 -373
  1007. package/dist/treeshaking/components/sig/components/OSigMember.mjs +0 -5
  1008. package/dist/treeshaking/components/sig/components/OSigMember.vue_vue_type_script_setup_true_lang.mjs +0 -190
  1009. package/dist/treeshaking/components/sig/components/OSigRepo.mjs +0 -5
  1010. package/dist/treeshaking/components/sig/components/OSigRepo.vue_vue_type_script_setup_true_lang.mjs +0 -181
  1011. package/dist/treeshaking/components/sig/components/OSigUserContribute.mjs +0 -5
  1012. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue_vue_type_script_setup_true_lang.mjs +0 -326
  1013. package/dist/treeshaking/components/summit/OSummit.mjs +0 -6
  1014. package/dist/treeshaking/components/summit/OSummit.vue_vue_type_script_setup_true_lang.mjs +0 -59
  1015. package/dist/treeshaking/components/summit/OSummitIntro.mjs +0 -6
  1016. package/dist/treeshaking/components/summit/OSummitIntro.vue_vue_type_script_setup_true_lang.mjs +0 -22
  1017. package/dist/treeshaking/components/summit/OSummitLive.mjs +0 -6
  1018. package/dist/treeshaking/components/summit/OSummitLive.vue_vue_type_script_setup_true_lang.mjs +0 -141
  1019. package/dist/treeshaking/components/summit/OSummitSchedule.mjs +0 -7
  1020. package/dist/treeshaking/components/summit/OSummitSchedule.vue_vue_type_script_setup_true_lang.mjs +0 -229
  1021. package/dist/treeshaking/components/summit/components/OSummitTabs.mjs +0 -6
  1022. package/dist/treeshaking/components/summit/components/OSummitTabs.vue_vue_type_script_setup_true_lang.mjs +0 -127
  1023. package/dist/treeshaking/components/user-center/OAccountSecurity.mjs +0 -6
  1024. package/dist/treeshaking/components/user-center/OAccountSecurity.vue_vue_type_script_setup_true_lang.mjs +0 -298
  1025. package/dist/treeshaking/components/user-center/OAccountSecurity.vue_vue_type_style_index_0_scoped_34dbfef7_lang.css +0 -253
  1026. package/dist/treeshaking/components/user-center/OAccountSetting.mjs +0 -6
  1027. package/dist/treeshaking/components/user-center/OAccountSetting.vue_vue_type_script_setup_true_lang.mjs +0 -337
  1028. package/dist/treeshaking/components/user-center/OAccountSetting.vue_vue_type_style_index_0_scoped_5887ac06_lang.css +0 -284
  1029. package/dist/treeshaking/components/user-center/OAppHeader.mjs +0 -6
  1030. package/dist/treeshaking/components/user-center/OAppHeader.vue_vue_type_script_setup_true_lang.mjs +0 -215
  1031. package/dist/treeshaking/components/user-center/OAsideBar.mjs +0 -6
  1032. package/dist/treeshaking/components/user-center/OAsideBar.vue_vue_type_script_setup_true_lang.mjs +0 -89
  1033. package/dist/treeshaking/components/user-center/OLayout.mjs +0 -6
  1034. package/dist/treeshaking/components/user-center/OLayout.vue_vue_type_script_setup_true_lang.mjs +0 -19
  1035. package/dist/treeshaking/components/user-center/OTheAccountManage.mjs +0 -6
  1036. package/dist/treeshaking/components/user-center/OTheAccountManage.vue_vue_type_script_setup_true_lang.mjs +0 -14
  1037. package/dist/treeshaking/components/user-center/OTheCreateMeeting.mjs +0 -6
  1038. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue_vue_type_script_setup_true_lang.mjs +0 -90
  1039. package/dist/treeshaking/components/user-center/OTheMeeting.mjs +0 -6
  1040. package/dist/treeshaking/components/user-center/OTheMeeting.vue_vue_type_script_setup_true_lang.mjs +0 -111
  1041. package/dist/treeshaking/components/user-center/OThirdPartyBindings.mjs +0 -6
  1042. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue_vue_type_script_setup_true_lang.mjs +0 -343
  1043. package/dist/treeshaking/components/user-center/OUserInfo.mjs +0 -8
  1044. package/dist/treeshaking/components/user-center/OUserInfo.vue_vue_type_script_setup_true_lang.mjs +0 -491
  1045. package/dist/treeshaking/components/user-center/internal/OAppDialog.mjs +0 -6
  1046. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue_vue_type_script_setup_true_lang.mjs +0 -363
  1047. package/dist/treeshaking/components/user-center/internal/OAppEmpty.mjs +0 -6
  1048. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue_vue_type_script_setup_true_lang.mjs +0 -30
  1049. package/dist/treeshaking/components/user-center/internal/OCommonHeader.mjs +0 -6
  1050. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue_vue_type_script_setup_true_lang.mjs +0 -165
  1051. package/dist/treeshaking/components/user-center/internal/OCountdownButton.mjs +0 -4
  1052. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue_vue_type_script_setup_true_lang.mjs +0 -55
  1053. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.mjs +0 -7
  1054. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue_vue_type_script_setup_true_lang.mjs +0 -281
  1055. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.mjs +0 -7
  1056. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue_vue_type_script_setup_true_lang.mjs +0 -121
  1057. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.mjs +0 -7
  1058. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue_vue_type_script_setup_true_lang.mjs +0 -134
  1059. package/dist/treeshaking/components/user-center/internal/OMaskEye.mjs +0 -6
  1060. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue_vue_type_script_setup_true_lang.mjs +0 -26
  1061. package/dist/treeshaking/components/user-center/internal/OModifyPwd.mjs +0 -6
  1062. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue_vue_type_script_setup_true_lang.mjs +0 -401
  1063. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.mjs +0 -6
  1064. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue_vue_type_script_setup_true_lang.mjs +0 -118
  1065. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.mjs +0 -6
  1066. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue_vue_type_script_setup_true_lang.mjs +0 -97
  1067. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.mjs +0 -6
  1068. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue_vue_type_script_setup_true_lang.mjs +0 -88
  1069. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.mjs +0 -7
  1070. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue_vue_type_script_setup_true_lang.mjs +0 -347
  1071. package/dist/treeshaking/components/user-center/verify/Verify.mjs +0 -58
  1072. package/dist/treeshaking/components/user-center/verify/Verify.vue_vue_type_script_lang.mjs +0 -72
  1073. package/dist/treeshaking/components/user-center/verify/VerifySlide.mjs +0 -105
  1074. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue_vue_type_script_lang.mjs +0 -334
  1075. package/dist/treeshaking/components/video/OVideoDetail.mjs +0 -5
  1076. package/dist/treeshaking/components/video/OVideoDetail.vue_vue_type_script_setup_true_lang.mjs +0 -206
  1077. /package/dist/treeshaking/components/activity/{OActivityApproval.vue_vue_type_style_index_0_lang.css → OActivityApproval.css} +0 -0
  1078. /package/dist/treeshaking/components/activity/{OActivityMyCalendar.vue_vue_type_style_index_0_lang.css → OActivityMyCalendar.css} +0 -0
  1079. /package/dist/treeshaking/components/anchor-bar/{OAnchorBar.vue_vue_type_style_index_0_scoped_f662dd83_lang.css → OAnchorBar.css} +0 -0
  1080. /package/dist/treeshaking/components/article/{OArticle.vue_vue_type_style_index_0_scoped_f94c0e57_lang.css → OArticle.css} +0 -0
  1081. /package/dist/treeshaking/components/article/components/{ArticleTitle.vue_vue_type_style_index_0_scoped_b96d293f_lang.css → ArticleTitle.css} +0 -0
  1082. /package/dist/treeshaking/components/article-anchor/components/{ArticleAnchorPad.vue_vue_type_style_index_0_scoped_3c75b66d_lang.css → ArticleAnchorPad.css} +0 -0
  1083. /package/dist/treeshaking/components/article-anchor/components/{ArticleAnchorPc.vue_vue_type_style_index_0_scoped_a480e4e7_lang.css → ArticleAnchorPc.css} +0 -0
  1084. /package/dist/treeshaking/components/article-pagination/{OArticlePagination.vue_vue_type_style_index_0_scoped_8a8cf9f8_lang.css → OArticlePagination.css} +0 -0
  1085. /package/dist/treeshaking/components/banner/{OBanner.vue_vue_type_style_index_0_scoped_8cfcc7ff_lang.css → OBanner.css} +0 -0
  1086. /package/dist/treeshaking/components/banner/{OBanner.vue_vue_type_style_index_1_scoped_8cfcc7ff_lang.css → OBanner2.css} +0 -0
  1087. /package/dist/treeshaking/components/banner/{OBannerContent.vue_vue_type_style_index_0_scoped_1904d05a_lang.css → OBannerContent.css} +0 -0
  1088. /package/dist/treeshaking/components/brand/{OBrandFile.vue_vue_type_style_index_0_scoped_9919f662_lang.css → OBrandFile.css} +0 -0
  1089. /package/dist/treeshaking/components/brand/{OBrandLogo.vue_vue_type_style_index_0_scoped_6b4fb6c1_lang.css → OBrandLogo.css} +0 -0
  1090. /package/dist/treeshaking/components/brand/{OBrandLogo.vue_vue_type_style_index_1_lang.css → OBrandLogo2.css} +0 -0
  1091. /package/dist/treeshaking/components/brand/{OBrandStandard.vue_vue_type_style_index_0_scoped_a9afbc57_lang.css → OBrandStandard.css} +0 -0
  1092. /package/dist/treeshaking/components/common/{AppAvatar.vue_vue_type_style_index_0_scoped_9aaf13f3_lang.css → AppAvatar.css} +0 -0
  1093. /package/dist/treeshaking/components/common/{ContentWrapper.vue_vue_type_style_index_0_scoped_9e217f8f_lang.css → ContentWrapper.css} +0 -0
  1094. /package/dist/treeshaking/components/common/{WordAvatar.vue_vue_type_style_index_0_lang.css → WordAvatar.css} +0 -0
  1095. /package/dist/treeshaking/components/cookie-notice/{OCookieNotice.vue_vue_type_style_index_0_lang.css → OCookieNotice.css} +0 -0
  1096. /package/dist/treeshaking/components/cookie-notice/{OCookieNotice.vue_vue_type_style_index_1_scoped_f4e92a4b_lang.css → OCookieNotice2.css} +0 -0
  1097. /package/dist/treeshaking/components/empty/{OEmpty.vue_vue_type_style_index_0_scoped_4381b83c_lang.css → OEmpty.css} +0 -0
  1098. /package/dist/treeshaking/components/events/{OEventsApply.vue_vue_type_style_index_0_lang.css → OEventsApply.css} +0 -0
  1099. /package/dist/treeshaking/components/events/{OEventsCalendar.vue_vue_type_style_index_0_lang.css → OEventsCalendar.css} +0 -0
  1100. /package/dist/treeshaking/components/events/{OEventsList.vue_vue_type_style_index_0_lang.css → OEventsList.css} +0 -0
  1101. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDoc.vue_vue_type_style_index_0_scoped_a8f7d8ef_lang.css → OFeedbackDoc.css} +0 -0
  1102. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDocContent.vue_vue_type_style_index_0_scoped_994ce5c5_lang.css → OFeedbackDocContent.css} +0 -0
  1103. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDocPopup.vue_vue_type_style_index_0_scoped_61cd944c_lang.css → OFeedbackDocPopup.css} +0 -0
  1104. /package/dist/treeshaking/components/float-poster/{OFloatPoster.vue_vue_type_style_index_0_scoped_e67cdd62_lang.css → OFloatPoster.css} +0 -0
  1105. /package/dist/treeshaking/components/footer/{OFooter.vue_vue_type_style_index_0_scoped_41010b1f_lang.css → OFooter.css} +0 -0
  1106. /package/dist/treeshaking/components/footer/components/{FooterList.vue_vue_type_style_index_0_scoped_1d7a4555_lang.css → FooterList.css} +0 -0
  1107. /package/dist/treeshaking/components/footer/components/{FooterSimple.vue_vue_type_style_index_0_scoped_bb36ddad_lang.css → FooterSimple.css} +0 -0
  1108. /package/dist/treeshaking/components/header/{OHeader.vue_vue_type_style_index_0_scoped_c1620a61_lang.css → OHeader.css} +0 -0
  1109. /package/dist/treeshaking/components/header/{OHeaderMobile.vue_vue_type_style_index_0_scoped_0a2d44bb_lang.css → OHeaderMobile.css} +0 -0
  1110. /package/dist/treeshaking/components/header/components/{HeaderContent.vue_vue_type_style_index_0_scoped_366a2b01_lang.css → HeaderContent.css} +0 -0
  1111. /package/dist/treeshaking/components/header/components/{HeaderFlatten.vue_vue_type_style_index_0_scoped_edcea052_lang.css → HeaderFlatten.css} +0 -0
  1112. /package/dist/treeshaking/components/header/components/{HeaderNav.vue_vue_type_style_index_0_scoped_01bf1a8c_lang.css → HeaderNav.css} +0 -0
  1113. /package/dist/treeshaking/components/header/components/{HeaderNavMobile.vue_vue_type_style_index_0_scoped_5c72051b_lang.css → HeaderNavMobile.css} +0 -0
  1114. /package/dist/treeshaking/components/header-language-switcher/{OHeaderLanguageSwitcher.vue_vue_type_style_index_0_scoped_423f1b29_lang.css → OHeaderLanguageSwitcher.css} +0 -0
  1115. /package/dist/treeshaking/components/header-language-switcher/{OHeaderLanguageSwitcher.vue_vue_type_style_index_1_lang.css → OHeaderLanguageSwitcher2.css} +0 -0
  1116. /package/dist/treeshaking/components/header-search/{OHeaderSearch.vue_vue_type_style_index_0_scoped_bf46f1ee_lang.css → OHeaderSearch.css} +0 -0
  1117. /package/dist/treeshaking/components/header-source-code/{OHeaderSourceCode.vue_vue_type_style_index_0_scoped_4c72b8c0_lang.css → OHeaderSourceCode.css} +0 -0
  1118. /package/dist/treeshaking/components/header-theme/{OHeaderTheme.vue_vue_type_style_index_0_scoped_a8461f7a_lang.css → OHeaderTheme.css} +0 -0
  1119. /package/dist/treeshaking/components/header-user/{OHeaderUser.vue_vue_type_style_index_0_scoped_01df49a0_lang.css → OHeaderUser.css} +0 -0
  1120. /package/dist/treeshaking/components/header-user/{OHeaderUser.vue_vue_type_style_index_1_lang.css → OHeaderUser2.css} +0 -0
  1121. /package/dist/treeshaking/components/html-viewer/{OHtmlViewer.vue_vue_type_style_index_0_scoped_2f5d08df_lang.css → OHtmlViewer.css} +0 -0
  1122. /package/dist/treeshaking/components/logo-swiper/{OLogoSwiper.vue_vue_type_style_index_0_scoped_6c8c87fc_lang.css → OLogoSwiper.css} +0 -0
  1123. /package/dist/treeshaking/components/logo-swiper/{OLogoSwiperItems.vue_vue_type_style_index_0_scoped_2d960cc9_lang.css → OLogoSwiperItems.css} +0 -0
  1124. /package/dist/treeshaking/components/markdown/{OMarkdown.vue_vue_type_style_index_0_lang.css → OMarkdown.css} +0 -0
  1125. /package/dist/treeshaking/components/markdown/components/{MarkdownCode.vue_vue_type_style_index_0_lang.css → MarkdownCode.css} +0 -0
  1126. /package/dist/treeshaking/components/markdown/components/{MarkdownCode.vue_vue_type_style_index_1_scoped_8895ed58_lang.css → MarkdownCode2.css} +0 -0
  1127. /package/dist/treeshaking/components/markdown/components/{MarkdownImage.vue_vue_type_style_index_0_scoped_af8b0296_lang.css → MarkdownImage.css} +0 -0
  1128. /package/dist/treeshaking/components/markdown/components/{MarkdownTable.vue_vue_type_style_index_0_scoped_ce85236e_lang.css → MarkdownTable.css} +0 -0
  1129. /package/dist/treeshaking/components/markdown/components/{MarkdownTableData.vue_vue_type_style_index_0_scoped_5f73735b_lang.css → MarkdownTableData.css} +0 -0
  1130. /package/dist/treeshaking/components/markdown/components/{MarkdownTableExpand.vue_vue_type_style_index_0_scoped_e625a513_lang.css → MarkdownTableExpand.css} +0 -0
  1131. /package/dist/treeshaking/components/markdown/components/{MarkdownTitle.vue_vue_type_style_index_0_scoped_73874b80_lang.css → MarkdownTitle.css} +0 -0
  1132. /package/dist/treeshaking/components/meeting/{OMeetingCalendar.vue_vue_type_style_index_0_lang.css → OMeetingCalendar.css} +0 -0
  1133. /package/dist/treeshaking/components/meeting/{OMeetingMinutes.vue_vue_type_style_index_0_lang.css → OMeetingMinutes.css} +0 -0
  1134. /package/dist/treeshaking/components/meeting/{OMeetingMinutesCopyDetail.vue_vue_type_style_index_0_scoped_6e742903_lang.css → OMeetingMinutesCopyDetail.css} +0 -0
  1135. /package/dist/treeshaking/components/meeting/{OMeetingMyCalendar.vue_vue_type_style_index_0_lang.css → OMeetingMyCalendar.css} +0 -0
  1136. /package/dist/treeshaking/components/meeting/{OMeetingPlayback.vue_vue_type_style_index_0_lang.css → OMeetingPlayback.css} +0 -0
  1137. /package/dist/treeshaking/components/meeting/{OMeetingSendMinutesForm.vue_vue_type_style_index_0_lang.css → OMeetingSendMinutesForm.css} +0 -0
  1138. /package/dist/treeshaking/components/meeting/{OMeetingSigCalendar.vue_vue_type_style_index_0_lang.css → OMeetingSigCalendar.css} +0 -0
  1139. /package/dist/treeshaking/components/meeting/components/{OMeetingCalendarList.vue_vue_type_style_index_0_lang.css → OMeetingCalendarList.css} +0 -0
  1140. /package/dist/treeshaking/components/meeting/components/{OMeetingCalendarSelector.vue_vue_type_style_index_0_lang.css → OMeetingCalendarSelector.css} +0 -0
  1141. /package/dist/treeshaking/components/meeting/components/{OMeetingCalendarSelector.vue_vue_type_style_index_1_lang.css → OMeetingCalendarSelector2.css} +0 -0
  1142. /package/dist/treeshaking/components/meeting/components/{OMeetingDetail.vue_vue_type_style_index_0_lang.css → OMeetingDetail.css} +0 -0
  1143. /package/dist/treeshaking/components/meeting/components/{OMeetingPlaybackSubtitles.vue_vue_type_style_index_0_lang.css → OMeetingPlaybackSubtitles.css} +0 -0
  1144. /package/dist/treeshaking/components/meeting/components/{OMeetingSendMinutesDialog.vue_vue_type_style_index_0_scoped_1bd384f6_lang.css → OMeetingSendMinutesDialog.css} +0 -0
  1145. /package/dist/treeshaking/components/meeting/components/{OMeetingSigAside.vue_vue_type_style_index_0_lang.css → OMeetingSigAside.css} +0 -0
  1146. /package/dist/treeshaking/components/org/{OOrgDesc.vue_vue_type_style_index_0_scoped_5a9df0b4_lang.css → OOrgDesc.css} +0 -0
  1147. /package/dist/treeshaking/components/org/{OOrgMembers.vue_vue_type_style_index_0_scoped_dc325798_lang.css → OOrgMembers.css} +0 -0
  1148. /package/dist/treeshaking/components/recursion-menu/{ORecursionMenuItem.vue_vue_type_style_index_0_scoped_14237743_lang.css → ORecursionMenuItem.css} +0 -0
  1149. /package/dist/treeshaking/components/search/{OSearchInput.vue_vue_type_style_index_0_scoped_ee331b07_lang.css → OSearchInput.css} +0 -0
  1150. /package/dist/treeshaking/components/search/internal/{HighlightText.vue_vue_type_style_index_0_scoped_2a99e23c_lang.css → HighlightText.css} +0 -0
  1151. /package/dist/treeshaking/components/search/internal/{SearchImageInput.vue_vue_type_style_index_0_scoped_4a3e5145_lang.css → SearchImageInput.css} +0 -0
  1152. /package/dist/treeshaking/components/search/internal/{SearchImageInput.vue_vue_type_style_index_1_lang.css → SearchImageInput2.css} +0 -0
  1153. /package/dist/treeshaking/components/search/internal/{SearchPanel.vue_vue_type_style_index_0_scoped_a5767f01_lang.css → SearchPanel.css} +0 -0
  1154. /package/dist/treeshaking/components/search-doc-result/{OSearchDocResult.vue_vue_type_style_index_0_scoped_25235996_lang.css → OSearchDocResult.css} +0 -0
  1155. /package/dist/treeshaking/components/search-result/{OSearchResult.vue_vue_type_style_index_0_scoped_9d8dd556_lang.css → OSearchResult.css} +0 -0
  1156. /package/dist/treeshaking/components/search-result/{OSearchResultHeader.vue_vue_type_style_index_0_scoped_70bc0c95_lang.css → OSearchResultHeader.css} +0 -0
  1157. /package/dist/treeshaking/components/search-result/{OSearchResultItem.vue_vue_type_style_index_0_scoped_0914fdb7_lang.css → OSearchResultItem.css} +0 -0
  1158. /package/dist/treeshaking/components/search-result/components/{OSearchResultEmpty.vue_vue_type_style_index_0_scoped_da22a823_lang.css → OSearchResultEmpty.css} +0 -0
  1159. /package/dist/treeshaking/components/search-result/components/{OSearchResultFeedback.vue_vue_type_style_index_0_scoped_72958e79_lang.css → OSearchResultFeedback.css} +0 -0
  1160. /package/dist/treeshaking/components/search-result/components/{OSearchResultFeedbackBanner.vue_vue_type_style_index_0_scoped_4cd638c6_lang.css → OSearchResultFeedbackBanner.css} +0 -0
  1161. /package/dist/treeshaking/components/search-result/components/{OSearchResultRelative.vue_vue_type_style_index_0_scoped_6872ff03_lang.css → OSearchResultRelative.css} +0 -0
  1162. /package/dist/treeshaking/components/section/{OSection.vue_vue_type_style_index_0_scoped_dae37748_lang.css → OSection.css} +0 -0
  1163. /package/dist/treeshaking/components/sig/{OSigDetail.vue_vue_type_style_index_0_lang.css → OSigDetail.css} +0 -0
  1164. /package/dist/treeshaking/components/sig/{OSigList.vue_vue_type_style_index_0_lang.css → OSigList.css} +0 -0
  1165. /package/dist/treeshaking/components/sig/components/{OSigDetailInfoCard.vue_vue_type_style_index_0_lang.css → OSigDetailInfoCard.css} +0 -0
  1166. /package/dist/treeshaking/components/sig/components/{OSigMember.vue_vue_type_style_index_0_lang.css → OSigMember.css} +0 -0
  1167. /package/dist/treeshaking/components/sig/components/{OSigRepo.vue_vue_type_style_index_0_lang.css → OSigRepo.css} +0 -0
  1168. /package/dist/treeshaking/components/sig/components/{OSigUserContribute.vue_vue_type_style_index_0_lang.css → OSigUserContribute.css} +0 -0
  1169. /package/dist/treeshaking/components/summit/{OSummit.vue_vue_type_style_index_0_scoped_6e15ff06_lang.css → OSummit.css} +0 -0
  1170. /package/dist/treeshaking/components/summit/{OSummitIntro.vue_vue_type_style_index_0_scoped_4878dd94_lang.css → OSummitIntro.css} +0 -0
  1171. /package/dist/treeshaking/components/summit/{OSummitLive.vue_vue_type_style_index_0_scoped_634db517_lang.css → OSummitLive.css} +0 -0
  1172. /package/dist/treeshaking/components/summit/{OSummitSchedule.vue_vue_type_style_index_0_scoped_934d2319_lang.css → OSummitSchedule.css} +0 -0
  1173. /package/dist/treeshaking/components/summit/{OSummitSchedule.vue_vue_type_style_index_1_lang.css → OSummitSchedule2.css} +0 -0
  1174. /package/dist/treeshaking/components/summit/components/{OSummitTabs.vue_vue_type_style_index_0_scoped_7337571d_lang.css → OSummitTabs.css} +0 -0
  1175. /package/dist/treeshaking/components/user-center/{OAppHeader.vue_vue_type_style_index_0_scoped_c5aea772_lang.css → OAppHeader.css} +0 -0
  1176. /package/dist/treeshaking/components/user-center/{OAsideBar.vue_vue_type_style_index_0_scoped_52e6041d_lang.css → OAsideBar.css} +0 -0
  1177. /package/dist/treeshaking/components/user-center/{OLayout.vue_vue_type_style_index_0_scoped_57f2a891_lang.css → OLayout.css} +0 -0
  1178. /package/dist/treeshaking/components/user-center/{OTheAccountManage.vue_vue_type_style_index_0_scoped_77534a05_lang.css → OTheAccountManage.css} +0 -0
  1179. /package/dist/treeshaking/components/user-center/{OTheCreateMeeting.vue_vue_type_style_index_0_scoped_fd23cd00_lang.css → OTheCreateMeeting.css} +0 -0
  1180. /package/dist/treeshaking/components/user-center/{OTheMeeting.vue_vue_type_style_index_0_scoped_0dd1b8dd_lang.css → OTheMeeting.css} +0 -0
  1181. /package/dist/treeshaking/components/user-center/{OThirdPartyBindings.vue_vue_type_style_index_0_scoped_aae76194_lang.css → OThirdPartyBindings.css} +0 -0
  1182. /package/dist/treeshaking/components/user-center/{OUserInfo.vue_vue_type_style_index_0_scoped_c12d3f54_lang.css → OUserInfo.css} +0 -0
  1183. /package/dist/treeshaking/components/user-center/{OUserInfo.vue_vue_type_style_index_1_lang.css → OUserInfo2.css} +0 -0
  1184. /package/dist/treeshaking/components/user-center/{OUserInfo.vue_vue_type_style_index_2_scoped_c12d3f54_lang.css → OUserInfo3.css} +0 -0
  1185. /package/dist/treeshaking/components/user-center/internal/{OAppDialog.vue_vue_type_style_index_0_scoped_67324b3c_lang.css → OAppDialog.css} +0 -0
  1186. /package/dist/treeshaking/components/user-center/internal/{OAppEmpty.vue_vue_type_style_index_0_scoped_7a03249c_lang.css → OAppEmpty.css} +0 -0
  1187. /package/dist/treeshaking/components/user-center/internal/{OCommonHeader.vue_vue_type_style_index_0_scoped_89fdfe34_lang.css → OCommonHeader.css} +0 -0
  1188. /package/dist/treeshaking/components/user-center/internal/{ODeleteAccountModal.vue_vue_type_style_index_0_scoped_e8f10683_lang.css → ODeleteAccountModal.css} +0 -0
  1189. /package/dist/treeshaking/components/user-center/internal/{ODeleteAccountModal.vue_vue_type_style_index_1_lang.css → ODeleteAccountModal2.css} +0 -0
  1190. /package/dist/treeshaking/components/user-center/internal/{OEditNicknameDialog.vue_vue_type_style_index_0_scoped_31e15aff_lang.css → OEditNicknameDialog.css} +0 -0
  1191. /package/dist/treeshaking/components/user-center/internal/{OEditNicknameDialog.vue_vue_type_style_index_1_lang.css → OEditNicknameDialog2.css} +0 -0
  1192. /package/dist/treeshaking/components/user-center/internal/{OEditOrgDialog.vue_vue_type_style_index_0_scoped_80d49054_lang.css → OEditOrgDialog.css} +0 -0
  1193. /package/dist/treeshaking/components/user-center/internal/{OEditOrgDialog.vue_vue_type_style_index_1_lang.css → OEditOrgDialog2.css} +0 -0
  1194. /package/dist/treeshaking/components/user-center/internal/{OMaskEye.vue_vue_type_style_index_0_scoped_a1344e1a_lang.css → OMaskEye.css} +0 -0
  1195. /package/dist/treeshaking/components/user-center/internal/{OModifyPwd.vue_vue_type_style_index_0_scoped_5e0452e7_lang.css → OModifyPwd.css} +0 -0
  1196. /package/dist/treeshaking/components/user-center/internal/{OPasswordPopInput.vue_vue_type_style_index_0_scoped_1bf14f73_lang.css → OPasswordPopInput.css} +0 -0
  1197. /package/dist/treeshaking/components/user-center/internal/{OToBindingTipModal.vue_vue_type_style_index_0_scoped_8d479930_lang.css → OToBindingTipModal.css} +0 -0
  1198. /package/dist/treeshaking/components/user-center/internal/{OUnbindingThirdpartyAccountModal.vue_vue_type_style_index_0_scoped_d6042985_lang.css → OUnbindingThirdpartyAccountModal.css} +0 -0
  1199. /package/dist/treeshaking/components/user-center/internal/{OUploadAvatar.vue_vue_type_style_index_0_scoped_7067a565_lang.css → OUploadAvatar.css} +0 -0
  1200. /package/dist/treeshaking/components/user-center/internal/{OUploadAvatar.vue_vue_type_style_index_1_lang.css → OUploadAvatar2.css} +0 -0
  1201. /package/dist/treeshaking/components/user-center/verify/{Verify.vue_vue_type_style_index_0_lang.css → Verify.css} +0 -0
  1202. /package/dist/treeshaking/components/video/{OVideoDetail.vue_vue_type_style_index_0_lang.css → OVideoDetail.css} +0 -0
@@ -1,1788 +1,1693 @@
1
- import { __toESM } from "../../_rolldown/runtime.mjs";
2
- import { require_window } from "../../global/window.js.mjs";
3
1
  import resolveUrl from "../../@videojs/vhs-utils/es/resolve-url.js.mjs";
4
- import decodeB64ToUint8Array from "../../@videojs/vhs-utils/es/decode-b64-to-uint8-array.js.mjs";
2
+ import window$1 from "../../global/window.js.mjs";
5
3
  import { forEachMediaGroup } from "../../@videojs/vhs-utils/es/media-groups.js.mjs";
6
- import { require_lib } from "../../@xmldom/xmldom/lib/index.js.mjs";
7
- // ../../node_modules/.pnpm/mpd-parser@1.3.1/node_modules/mpd-parser/dist/mpd-parser.es.js
4
+ import decodeB64ToUint8Array from "../../@videojs/vhs-utils/es/decode-b64-to-uint8-array.js.mjs";
5
+ import { l as libExports } from "../../@xmldom/xmldom/lib/index.js.mjs";
8
6
  /*! @name mpd-parser @version 1.3.1 @license Apache-2.0 */
9
- var import_window = /* @__PURE__ */ __toESM(require_window());
10
- var import_lib = require_lib();
11
- var isObject = (obj) => {
12
- return !!obj && typeof obj === "object";
7
+ const isObject = (obj) => {
8
+ return !!obj && typeof obj === "object";
13
9
  };
14
- var merge = (...objects) => {
15
- return objects.reduce((result, source) => {
16
- if (typeof source !== "object") return result;
17
- Object.keys(source).forEach((key) => {
18
- if (Array.isArray(result[key]) && Array.isArray(source[key])) result[key] = result[key].concat(source[key]);
19
- else if (isObject(result[key]) && isObject(source[key])) result[key] = merge(result[key], source[key]);
20
- else result[key] = source[key];
21
- });
22
- return result;
23
- }, {});
10
+ const merge = (...objects) => {
11
+ return objects.reduce((result, source) => {
12
+ if (typeof source !== "object") {
13
+ return result;
14
+ }
15
+ Object.keys(source).forEach((key) => {
16
+ if (Array.isArray(result[key]) && Array.isArray(source[key])) {
17
+ result[key] = result[key].concat(source[key]);
18
+ } else if (isObject(result[key]) && isObject(source[key])) {
19
+ result[key] = merge(result[key], source[key]);
20
+ } else {
21
+ result[key] = source[key];
22
+ }
23
+ });
24
+ return result;
25
+ }, {});
24
26
  };
25
- var values = (o) => Object.keys(o).map((k) => o[k]);
26
- var range = (start, end) => {
27
- const result = [];
28
- for (let i = start; i < end; i++) result.push(i);
29
- return result;
27
+ const values = (o) => Object.keys(o).map((k) => o[k]);
28
+ const range = (start, end) => {
29
+ const result = [];
30
+ for (let i = start; i < end; i++) {
31
+ result.push(i);
32
+ }
33
+ return result;
30
34
  };
31
- var flatten = (lists) => lists.reduce((x, y) => x.concat(y), []);
32
- var from = (list) => {
33
- if (!list.length) return [];
34
- const result = [];
35
- for (let i = 0; i < list.length; i++) result.push(list[i]);
36
- return result;
35
+ const flatten = (lists) => lists.reduce((x, y) => x.concat(y), []);
36
+ const from = (list) => {
37
+ if (!list.length) {
38
+ return [];
39
+ }
40
+ const result = [];
41
+ for (let i = 0; i < list.length; i++) {
42
+ result.push(list[i]);
43
+ }
44
+ return result;
37
45
  };
38
- var findIndexes = (l, key) => l.reduce((a, e, i) => {
39
- if (e[key]) a.push(i);
40
- return a;
46
+ const findIndexes = (l, key) => l.reduce((a, e, i) => {
47
+ if (e[key]) {
48
+ a.push(i);
49
+ }
50
+ return a;
41
51
  }, []);
42
- /**
43
- * Returns a union of the included lists provided each element can be identified by a key.
44
- *
45
- * @param {Array} list - list of lists to get the union of
46
- * @param {Function} keyFunction - the function to use as a key for each element
47
- *
48
- * @return {Array} the union of the arrays
49
- */
50
- var union = (lists, keyFunction) => {
51
- return values(lists.reduce((acc, list) => {
52
- list.forEach((el) => {
53
- acc[keyFunction(el)] = el;
54
- });
55
- return acc;
56
- }, {}));
52
+ const union = (lists, keyFunction) => {
53
+ return values(lists.reduce((acc, list) => {
54
+ list.forEach((el) => {
55
+ acc[keyFunction(el)] = el;
56
+ });
57
+ return acc;
58
+ }, {}));
57
59
  };
58
60
  var errors = {
59
- INVALID_NUMBER_OF_PERIOD: "INVALID_NUMBER_OF_PERIOD",
60
- INVALID_NUMBER_OF_CONTENT_STEERING: "INVALID_NUMBER_OF_CONTENT_STEERING",
61
- DASH_EMPTY_MANIFEST: "DASH_EMPTY_MANIFEST",
62
- DASH_INVALID_XML: "DASH_INVALID_XML",
63
- NO_BASE_URL: "NO_BASE_URL",
64
- MISSING_SEGMENT_INFORMATION: "MISSING_SEGMENT_INFORMATION",
65
- SEGMENT_TIME_UNSPECIFIED: "SEGMENT_TIME_UNSPECIFIED",
66
- UNSUPPORTED_UTC_TIMING_SCHEME: "UNSUPPORTED_UTC_TIMING_SCHEME"
61
+ INVALID_NUMBER_OF_PERIOD: "INVALID_NUMBER_OF_PERIOD",
62
+ DASH_EMPTY_MANIFEST: "DASH_EMPTY_MANIFEST",
63
+ DASH_INVALID_XML: "DASH_INVALID_XML",
64
+ NO_BASE_URL: "NO_BASE_URL",
65
+ SEGMENT_TIME_UNSPECIFIED: "SEGMENT_TIME_UNSPECIFIED",
66
+ UNSUPPORTED_UTC_TIMING_SCHEME: "UNSUPPORTED_UTC_TIMING_SCHEME"
67
67
  };
68
- /**
69
- * @typedef {Object} SingleUri
70
- * @property {string} uri - relative location of segment
71
- * @property {string} resolvedUri - resolved location of segment
72
- * @property {Object} byterange - Object containing information on how to make byte range
73
- * requests following byte-range-spec per RFC2616.
74
- * @property {String} byterange.length - length of range request
75
- * @property {String} byterange.offset - byte offset of range request
76
- *
77
- * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1
78
- */
79
- /**
80
- * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object
81
- * that conforms to how m3u8-parser is structured
82
- *
83
- * @see https://github.com/videojs/m3u8-parser
84
- *
85
- * @param {string} baseUrl - baseUrl provided by <BaseUrl> nodes
86
- * @param {string} source - source url for segment
87
- * @param {string} range - optional range used for range calls,
88
- * follows RFC 2616, Clause 14.35.1
89
- * @return {SingleUri} full segment information transformed into a format similar
90
- * to m3u8-parser
91
- */
92
- var urlTypeToSegment = ({ baseUrl = "", source = "", range = "", indexRange = "" }) => {
93
- const segment = {
94
- uri: source,
95
- resolvedUri: resolveUrl(baseUrl || "", source)
96
- };
97
- if (range || indexRange) {
98
- const ranges = (range ? range : indexRange).split("-");
99
- let startRange = import_window.default.BigInt ? import_window.default.BigInt(ranges[0]) : parseInt(ranges[0], 10);
100
- let endRange = import_window.default.BigInt ? import_window.default.BigInt(ranges[1]) : parseInt(ranges[1], 10);
101
- if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === "bigint") startRange = Number(startRange);
102
- if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === "bigint") endRange = Number(endRange);
103
- let length;
104
- if (typeof endRange === "bigint" || typeof startRange === "bigint") length = import_window.default.BigInt(endRange) - import_window.default.BigInt(startRange) + import_window.default.BigInt(1);
105
- else length = endRange - startRange + 1;
106
- if (typeof length === "bigint" && length < Number.MAX_SAFE_INTEGER) length = Number(length);
107
- segment.byterange = {
108
- length,
109
- offset: startRange
110
- };
111
- }
112
- return segment;
68
+ const urlTypeToSegment = ({
69
+ baseUrl = "",
70
+ source = "",
71
+ range: range2 = "",
72
+ indexRange = ""
73
+ }) => {
74
+ const segment = {
75
+ uri: source,
76
+ resolvedUri: resolveUrl(baseUrl || "", source)
77
+ };
78
+ if (range2 || indexRange) {
79
+ const rangeStr = range2 ? range2 : indexRange;
80
+ const ranges = rangeStr.split("-");
81
+ let startRange = window$1.BigInt ? window$1.BigInt(ranges[0]) : parseInt(ranges[0], 10);
82
+ let endRange = window$1.BigInt ? window$1.BigInt(ranges[1]) : parseInt(ranges[1], 10);
83
+ if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === "bigint") {
84
+ startRange = Number(startRange);
85
+ }
86
+ if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === "bigint") {
87
+ endRange = Number(endRange);
88
+ }
89
+ let length;
90
+ if (typeof endRange === "bigint" || typeof startRange === "bigint") {
91
+ length = window$1.BigInt(endRange) - window$1.BigInt(startRange) + window$1.BigInt(1);
92
+ } else {
93
+ length = endRange - startRange + 1;
94
+ }
95
+ if (typeof length === "bigint" && length < Number.MAX_SAFE_INTEGER) {
96
+ length = Number(length);
97
+ }
98
+ segment.byterange = {
99
+ length,
100
+ offset: startRange
101
+ };
102
+ }
103
+ return segment;
113
104
  };
114
- var byteRangeToString = (byterange) => {
115
- let endRange;
116
- if (typeof byterange.offset === "bigint" || typeof byterange.length === "bigint") endRange = import_window.default.BigInt(byterange.offset) + import_window.default.BigInt(byterange.length) - import_window.default.BigInt(1);
117
- else endRange = byterange.offset + byterange.length - 1;
118
- return `${byterange.offset}-${endRange}`;
105
+ const byteRangeToString = (byterange) => {
106
+ let endRange;
107
+ if (typeof byterange.offset === "bigint" || typeof byterange.length === "bigint") {
108
+ endRange = window$1.BigInt(byterange.offset) + window$1.BigInt(byterange.length) - window$1.BigInt(1);
109
+ } else {
110
+ endRange = byterange.offset + byterange.length - 1;
111
+ }
112
+ return `${byterange.offset}-${endRange}`;
119
113
  };
120
- /**
121
- * parse the end number attribue that can be a string
122
- * number, or undefined.
123
- *
124
- * @param {string|number|undefined} endNumber
125
- * The end number attribute.
126
- *
127
- * @return {number|null}
128
- * The result of parsing the end number.
129
- */
130
- var parseEndNumber = (endNumber) => {
131
- if (endNumber && typeof endNumber !== "number") endNumber = parseInt(endNumber, 10);
132
- if (isNaN(endNumber)) return null;
133
- return endNumber;
114
+ const parseEndNumber = (endNumber) => {
115
+ if (endNumber && typeof endNumber !== "number") {
116
+ endNumber = parseInt(endNumber, 10);
117
+ }
118
+ if (isNaN(endNumber)) {
119
+ return null;
120
+ }
121
+ return endNumber;
134
122
  };
135
- /**
136
- * Functions for calculating the range of available segments in static and dynamic
137
- * manifests.
138
- */
139
- var segmentRange = {
140
- /**
141
- * Returns the entire range of available segments for a static MPD
142
- *
143
- * @param {Object} attributes
144
- * Inheritied MPD attributes
145
- * @return {{ start: number, end: number }}
146
- * The start and end numbers for available segments
147
- */
148
- static(attributes) {
149
- const { duration, timescale = 1, sourceDuration, periodDuration } = attributes;
150
- const endNumber = parseEndNumber(attributes.endNumber);
151
- const segmentDuration = duration / timescale;
152
- if (typeof endNumber === "number") return {
153
- start: 0,
154
- end: endNumber
155
- };
156
- if (typeof periodDuration === "number") return {
157
- start: 0,
158
- end: periodDuration / segmentDuration
159
- };
160
- return {
161
- start: 0,
162
- end: sourceDuration / segmentDuration
163
- };
164
- },
165
- /**
166
- * Returns the current live window range of available segments for a dynamic MPD
167
- *
168
- * @param {Object} attributes
169
- * Inheritied MPD attributes
170
- * @return {{ start: number, end: number }}
171
- * The start and end numbers for available segments
172
- */
173
- dynamic(attributes) {
174
- const { NOW, clientOffset, availabilityStartTime, timescale = 1, duration, periodStart = 0, minimumUpdatePeriod = 0, timeShiftBufferDepth = Infinity } = attributes;
175
- const endNumber = parseEndNumber(attributes.endNumber);
176
- const now = (NOW + clientOffset) / 1e3;
177
- const periodStartWC = availabilityStartTime + periodStart;
178
- const periodDuration = now + minimumUpdatePeriod - periodStartWC;
179
- const segmentCount = Math.ceil(periodDuration * timescale / duration);
180
- const availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);
181
- const availableEnd = Math.floor((now - periodStartWC) * timescale / duration);
182
- return {
183
- start: Math.max(0, availableStart),
184
- end: typeof endNumber === "number" ? endNumber : Math.min(segmentCount, availableEnd)
185
- };
186
- }
123
+ const segmentRange = {
124
+ /**
125
+ * Returns the entire range of available segments for a static MPD
126
+ *
127
+ * @param {Object} attributes
128
+ * Inheritied MPD attributes
129
+ * @return {{ start: number, end: number }}
130
+ * The start and end numbers for available segments
131
+ */
132
+ static(attributes) {
133
+ const {
134
+ duration,
135
+ timescale = 1,
136
+ sourceDuration,
137
+ periodDuration
138
+ } = attributes;
139
+ const endNumber = parseEndNumber(attributes.endNumber);
140
+ const segmentDuration = duration / timescale;
141
+ if (typeof endNumber === "number") {
142
+ return {
143
+ start: 0,
144
+ end: endNumber
145
+ };
146
+ }
147
+ if (typeof periodDuration === "number") {
148
+ return {
149
+ start: 0,
150
+ end: periodDuration / segmentDuration
151
+ };
152
+ }
153
+ return {
154
+ start: 0,
155
+ end: sourceDuration / segmentDuration
156
+ };
157
+ },
158
+ /**
159
+ * Returns the current live window range of available segments for a dynamic MPD
160
+ *
161
+ * @param {Object} attributes
162
+ * Inheritied MPD attributes
163
+ * @return {{ start: number, end: number }}
164
+ * The start and end numbers for available segments
165
+ */
166
+ dynamic(attributes) {
167
+ const {
168
+ NOW,
169
+ clientOffset,
170
+ availabilityStartTime,
171
+ timescale = 1,
172
+ duration,
173
+ periodStart = 0,
174
+ minimumUpdatePeriod = 0,
175
+ timeShiftBufferDepth = Infinity
176
+ } = attributes;
177
+ const endNumber = parseEndNumber(attributes.endNumber);
178
+ const now = (NOW + clientOffset) / 1e3;
179
+ const periodStartWC = availabilityStartTime + periodStart;
180
+ const periodEndWC = now + minimumUpdatePeriod;
181
+ const periodDuration = periodEndWC - periodStartWC;
182
+ const segmentCount = Math.ceil(periodDuration * timescale / duration);
183
+ const availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);
184
+ const availableEnd = Math.floor((now - periodStartWC) * timescale / duration);
185
+ return {
186
+ start: Math.max(0, availableStart),
187
+ end: typeof endNumber === "number" ? endNumber : Math.min(segmentCount, availableEnd)
188
+ };
189
+ }
187
190
  };
188
- /**
189
- * Maps a range of numbers to objects with information needed to build the corresponding
190
- * segment list
191
- *
192
- * @name toSegmentsCallback
193
- * @function
194
- * @param {number} number
195
- * Number of the segment
196
- * @param {number} index
197
- * Index of the number in the range list
198
- * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}
199
- * Object with segment timing and duration info
200
- */
201
- /**
202
- * Returns a callback for Array.prototype.map for mapping a range of numbers to
203
- * information needed to build the segment list.
204
- *
205
- * @param {Object} attributes
206
- * Inherited MPD attributes
207
- * @return {toSegmentsCallback}
208
- * Callback map function
209
- */
210
- var toSegments = (attributes) => (number) => {
211
- const { duration, timescale = 1, periodStart, startNumber = 1 } = attributes;
212
- return {
213
- number: startNumber + number,
214
- duration: duration / timescale,
215
- timeline: periodStart,
216
- time: number * duration
217
- };
191
+ const toSegments = (attributes) => (number) => {
192
+ const {
193
+ duration,
194
+ timescale = 1,
195
+ periodStart,
196
+ startNumber = 1
197
+ } = attributes;
198
+ return {
199
+ number: startNumber + number,
200
+ duration: duration / timescale,
201
+ timeline: periodStart,
202
+ time: number * duration
203
+ };
218
204
  };
219
- /**
220
- * Returns a list of objects containing segment timing and duration info used for
221
- * building the list of segments. This uses the @duration attribute specified
222
- * in the MPD manifest to derive the range of segments.
223
- *
224
- * @param {Object} attributes
225
- * Inherited MPD attributes
226
- * @return {{number: number, duration: number, time: number, timeline: number}[]}
227
- * List of Objects with segment timing and duration info
228
- */
229
- var parseByDuration = (attributes) => {
230
- const { type, duration, timescale = 1, periodDuration, sourceDuration } = attributes;
231
- const { start, end } = segmentRange[type](attributes);
232
- const segments = range(start, end).map(toSegments(attributes));
233
- if (type === "static") {
234
- const index = segments.length - 1;
235
- const sectionDuration = typeof periodDuration === "number" ? periodDuration : sourceDuration;
236
- segments[index].duration = sectionDuration - duration / timescale * index;
237
- }
238
- return segments;
205
+ const parseByDuration = (attributes) => {
206
+ const {
207
+ type,
208
+ duration,
209
+ timescale = 1,
210
+ periodDuration,
211
+ sourceDuration
212
+ } = attributes;
213
+ const {
214
+ start,
215
+ end
216
+ } = segmentRange[type](attributes);
217
+ const segments = range(start, end).map(toSegments(attributes));
218
+ if (type === "static") {
219
+ const index = segments.length - 1;
220
+ const sectionDuration = typeof periodDuration === "number" ? periodDuration : sourceDuration;
221
+ segments[index].duration = sectionDuration - duration / timescale * index;
222
+ }
223
+ return segments;
239
224
  };
240
- /**
241
- * Translates SegmentBase into a set of segments.
242
- * (DASH SPEC Section 5.3.9.3.2) contains a set of <SegmentURL> nodes. Each
243
- * node should be translated into segment.
244
- *
245
- * @param {Object} attributes
246
- * Object containing all inherited attributes from parent elements with attribute
247
- * names as keys
248
- * @return {Object.<Array>} list of segments
249
- */
250
- var segmentsFromBase = (attributes) => {
251
- const { baseUrl, initialization = {}, sourceDuration, indexRange = "", periodStart, presentationTime, number = 0, duration } = attributes;
252
- if (!baseUrl) throw new Error(errors.NO_BASE_URL);
253
- const initSegment = urlTypeToSegment({
254
- baseUrl,
255
- source: initialization.sourceURL,
256
- range: initialization.range
257
- });
258
- const segment = urlTypeToSegment({
259
- baseUrl,
260
- source: baseUrl,
261
- indexRange
262
- });
263
- segment.map = initSegment;
264
- if (duration) {
265
- const segmentTimeInfo = parseByDuration(attributes);
266
- if (segmentTimeInfo.length) {
267
- segment.duration = segmentTimeInfo[0].duration;
268
- segment.timeline = segmentTimeInfo[0].timeline;
269
- }
270
- } else if (sourceDuration) {
271
- segment.duration = sourceDuration;
272
- segment.timeline = periodStart;
273
- }
274
- segment.presentationTime = presentationTime || periodStart;
275
- segment.number = number;
276
- return [segment];
225
+ const segmentsFromBase = (attributes) => {
226
+ const {
227
+ baseUrl,
228
+ initialization = {},
229
+ sourceDuration,
230
+ indexRange = "",
231
+ periodStart,
232
+ presentationTime,
233
+ number = 0,
234
+ duration
235
+ } = attributes;
236
+ if (!baseUrl) {
237
+ throw new Error(errors.NO_BASE_URL);
238
+ }
239
+ const initSegment = urlTypeToSegment({
240
+ baseUrl,
241
+ source: initialization.sourceURL,
242
+ range: initialization.range
243
+ });
244
+ const segment = urlTypeToSegment({
245
+ baseUrl,
246
+ source: baseUrl,
247
+ indexRange
248
+ });
249
+ segment.map = initSegment;
250
+ if (duration) {
251
+ const segmentTimeInfo = parseByDuration(attributes);
252
+ if (segmentTimeInfo.length) {
253
+ segment.duration = segmentTimeInfo[0].duration;
254
+ segment.timeline = segmentTimeInfo[0].timeline;
255
+ }
256
+ } else if (sourceDuration) {
257
+ segment.duration = sourceDuration;
258
+ segment.timeline = periodStart;
259
+ }
260
+ segment.presentationTime = presentationTime || periodStart;
261
+ segment.number = number;
262
+ return [segment];
277
263
  };
278
- /**
279
- * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist
280
- * according to the sidx information given.
281
- *
282
- * playlist.sidx has metadadata about the sidx where-as the sidx param
283
- * is the parsed sidx box itself.
284
- *
285
- * @param {Object} playlist the playlist to update the sidx information for
286
- * @param {Object} sidx the parsed sidx box
287
- * @return {Object} the playlist object with the updated sidx information
288
- */
289
- var addSidxSegmentsToPlaylist$1 = (playlist, sidx, baseUrl) => {
290
- const initSegment = playlist.sidx.map ? playlist.sidx.map : null;
291
- const sourceDuration = playlist.sidx.duration;
292
- const timeline = playlist.timeline || 0;
293
- const sidxByteRange = playlist.sidx.byterange;
294
- const sidxEnd = sidxByteRange.offset + sidxByteRange.length;
295
- const timescale = sidx.timescale;
296
- const mediaReferences = sidx.references.filter((r) => r.referenceType !== 1);
297
- const segments = [];
298
- const type = playlist.endList ? "static" : "dynamic";
299
- const periodStart = playlist.sidx.timeline;
300
- let presentationTime = periodStart;
301
- let number = playlist.mediaSequence || 0;
302
- let startIndex;
303
- if (typeof sidx.firstOffset === "bigint") startIndex = import_window.default.BigInt(sidxEnd) + sidx.firstOffset;
304
- else startIndex = sidxEnd + sidx.firstOffset;
305
- for (let i = 0; i < mediaReferences.length; i++) {
306
- const reference = sidx.references[i];
307
- const size = reference.referencedSize;
308
- const duration = reference.subsegmentDuration;
309
- let endIndex;
310
- if (typeof startIndex === "bigint") endIndex = startIndex + import_window.default.BigInt(size) - import_window.default.BigInt(1);
311
- else endIndex = startIndex + size - 1;
312
- const indexRange = `${startIndex}-${endIndex}`;
313
- const segment = segmentsFromBase({
314
- baseUrl,
315
- timescale,
316
- timeline,
317
- periodStart,
318
- presentationTime,
319
- number,
320
- duration,
321
- sourceDuration,
322
- indexRange,
323
- type
324
- })[0];
325
- if (initSegment) segment.map = initSegment;
326
- segments.push(segment);
327
- if (typeof startIndex === "bigint") startIndex += import_window.default.BigInt(size);
328
- else startIndex += size;
329
- presentationTime += duration / timescale;
330
- number++;
331
- }
332
- playlist.segments = segments;
333
- return playlist;
264
+ const addSidxSegmentsToPlaylist$1 = (playlist, sidx, baseUrl) => {
265
+ const initSegment = playlist.sidx.map ? playlist.sidx.map : null;
266
+ const sourceDuration = playlist.sidx.duration;
267
+ const timeline = playlist.timeline || 0;
268
+ const sidxByteRange = playlist.sidx.byterange;
269
+ const sidxEnd = sidxByteRange.offset + sidxByteRange.length;
270
+ const timescale = sidx.timescale;
271
+ const mediaReferences = sidx.references.filter((r) => r.referenceType !== 1);
272
+ const segments = [];
273
+ const type = playlist.endList ? "static" : "dynamic";
274
+ const periodStart = playlist.sidx.timeline;
275
+ let presentationTime = periodStart;
276
+ let number = playlist.mediaSequence || 0;
277
+ let startIndex;
278
+ if (typeof sidx.firstOffset === "bigint") {
279
+ startIndex = window$1.BigInt(sidxEnd) + sidx.firstOffset;
280
+ } else {
281
+ startIndex = sidxEnd + sidx.firstOffset;
282
+ }
283
+ for (let i = 0; i < mediaReferences.length; i++) {
284
+ const reference = sidx.references[i];
285
+ const size = reference.referencedSize;
286
+ const duration = reference.subsegmentDuration;
287
+ let endIndex;
288
+ if (typeof startIndex === "bigint") {
289
+ endIndex = startIndex + window$1.BigInt(size) - window$1.BigInt(1);
290
+ } else {
291
+ endIndex = startIndex + size - 1;
292
+ }
293
+ const indexRange = `${startIndex}-${endIndex}`;
294
+ const attributes = {
295
+ baseUrl,
296
+ timescale,
297
+ timeline,
298
+ periodStart,
299
+ presentationTime,
300
+ number,
301
+ duration,
302
+ sourceDuration,
303
+ indexRange,
304
+ type
305
+ };
306
+ const segment = segmentsFromBase(attributes)[0];
307
+ if (initSegment) {
308
+ segment.map = initSegment;
309
+ }
310
+ segments.push(segment);
311
+ if (typeof startIndex === "bigint") {
312
+ startIndex += window$1.BigInt(size);
313
+ } else {
314
+ startIndex += size;
315
+ }
316
+ presentationTime += duration / timescale;
317
+ number++;
318
+ }
319
+ playlist.segments = segments;
320
+ return playlist;
334
321
  };
335
- var SUPPORTED_MEDIA_TYPES = ["AUDIO", "SUBTITLES"];
336
- var TIME_FUDGE = 1 / 60;
337
- /**
338
- * Given a list of timelineStarts, combines, dedupes, and sorts them.
339
- *
340
- * @param {TimelineStart[]} timelineStarts - list of timeline starts
341
- *
342
- * @return {TimelineStart[]} the combined and deduped timeline starts
343
- */
344
- var getUniqueTimelineStarts = (timelineStarts) => {
345
- return union(timelineStarts, ({ timeline }) => timeline).sort((a, b) => a.timeline > b.timeline ? 1 : -1);
322
+ const SUPPORTED_MEDIA_TYPES = ["AUDIO", "SUBTITLES"];
323
+ const TIME_FUDGE = 1 / 60;
324
+ const getUniqueTimelineStarts = (timelineStarts) => {
325
+ return union(timelineStarts, ({
326
+ timeline
327
+ }) => timeline).sort((a, b) => a.timeline > b.timeline ? 1 : -1);
346
328
  };
347
- /**
348
- * Finds the playlist with the matching NAME attribute.
349
- *
350
- * @param {Array} playlists - playlists to search through
351
- * @param {string} name - the NAME attribute to search for
352
- *
353
- * @return {Object|null} the matching playlist object, or null
354
- */
355
- var findPlaylistWithName = (playlists, name) => {
356
- for (let i = 0; i < playlists.length; i++) if (playlists[i].attributes.NAME === name) return playlists[i];
357
- return null;
329
+ const findPlaylistWithName = (playlists, name) => {
330
+ for (let i = 0; i < playlists.length; i++) {
331
+ if (playlists[i].attributes.NAME === name) {
332
+ return playlists[i];
333
+ }
334
+ }
335
+ return null;
358
336
  };
359
- /**
360
- * Gets a flattened array of media group playlists.
361
- *
362
- * @param {Object} manifest - the main manifest object
363
- *
364
- * @return {Array} the media group playlists
365
- */
366
- var getMediaGroupPlaylists = (manifest) => {
367
- let mediaGroupPlaylists = [];
368
- forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, (properties, type, group, label) => {
369
- mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);
370
- });
371
- return mediaGroupPlaylists;
337
+ const getMediaGroupPlaylists = (manifest) => {
338
+ let mediaGroupPlaylists = [];
339
+ forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, (properties, type, group, label) => {
340
+ mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);
341
+ });
342
+ return mediaGroupPlaylists;
372
343
  };
373
- /**
374
- * Updates the playlist's media sequence numbers.
375
- *
376
- * @param {Object} config - options object
377
- * @param {Object} config.playlist - the playlist to update
378
- * @param {number} config.mediaSequence - the mediaSequence number to start with
379
- */
380
- var updateMediaSequenceForPlaylist = ({ playlist, mediaSequence }) => {
381
- playlist.mediaSequence = mediaSequence;
382
- playlist.segments.forEach((segment, index) => {
383
- segment.number = playlist.mediaSequence + index;
384
- });
344
+ const updateMediaSequenceForPlaylist = ({
345
+ playlist,
346
+ mediaSequence
347
+ }) => {
348
+ playlist.mediaSequence = mediaSequence;
349
+ playlist.segments.forEach((segment, index) => {
350
+ segment.number = playlist.mediaSequence + index;
351
+ });
385
352
  };
386
- /**
387
- * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists
388
- * and a complete list of timeline starts.
389
- *
390
- * If no matching playlist is found, only the discontinuity sequence number of the playlist
391
- * will be updated.
392
- *
393
- * Since early available timelines are not supported, at least one segment must be present.
394
- *
395
- * @param {Object} config - options object
396
- * @param {Object[]} oldPlaylists - the old playlists to use as a reference
397
- * @param {Object[]} newPlaylists - the new playlists to update
398
- * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point
399
- */
400
- var updateSequenceNumbers = ({ oldPlaylists, newPlaylists, timelineStarts }) => {
401
- newPlaylists.forEach((playlist) => {
402
- playlist.discontinuitySequence = timelineStarts.findIndex(function({ timeline }) {
403
- return timeline === playlist.timeline;
404
- });
405
- const oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);
406
- if (!oldPlaylist) return;
407
- if (playlist.sidx) return;
408
- const firstNewSegment = playlist.segments[0];
409
- const oldMatchingSegmentIndex = oldPlaylist.segments.findIndex(function(oldSegment) {
410
- return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;
411
- });
412
- if (oldMatchingSegmentIndex === -1) {
413
- updateMediaSequenceForPlaylist({
414
- playlist,
415
- mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length
416
- });
417
- playlist.segments[0].discontinuity = true;
418
- playlist.discontinuityStarts.unshift(0);
419
- if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) playlist.discontinuitySequence--;
420
- return;
421
- }
422
- if (oldPlaylist.segments[oldMatchingSegmentIndex].discontinuity && !firstNewSegment.discontinuity) {
423
- firstNewSegment.discontinuity = true;
424
- playlist.discontinuityStarts.unshift(0);
425
- playlist.discontinuitySequence--;
426
- }
427
- updateMediaSequenceForPlaylist({
428
- playlist,
429
- mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number
430
- });
431
- });
353
+ const updateSequenceNumbers = ({
354
+ oldPlaylists,
355
+ newPlaylists,
356
+ timelineStarts
357
+ }) => {
358
+ newPlaylists.forEach((playlist) => {
359
+ playlist.discontinuitySequence = timelineStarts.findIndex(function({
360
+ timeline
361
+ }) {
362
+ return timeline === playlist.timeline;
363
+ });
364
+ const oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);
365
+ if (!oldPlaylist) {
366
+ return;
367
+ }
368
+ if (playlist.sidx) {
369
+ return;
370
+ }
371
+ const firstNewSegment = playlist.segments[0];
372
+ const oldMatchingSegmentIndex = oldPlaylist.segments.findIndex(function(oldSegment) {
373
+ return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;
374
+ });
375
+ if (oldMatchingSegmentIndex === -1) {
376
+ updateMediaSequenceForPlaylist({
377
+ playlist,
378
+ mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length
379
+ });
380
+ playlist.segments[0].discontinuity = true;
381
+ playlist.discontinuityStarts.unshift(0);
382
+ if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {
383
+ playlist.discontinuitySequence--;
384
+ }
385
+ return;
386
+ }
387
+ const oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];
388
+ if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {
389
+ firstNewSegment.discontinuity = true;
390
+ playlist.discontinuityStarts.unshift(0);
391
+ playlist.discontinuitySequence--;
392
+ }
393
+ updateMediaSequenceForPlaylist({
394
+ playlist,
395
+ mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number
396
+ });
397
+ });
432
398
  };
433
- /**
434
- * Given an old parsed manifest object and a new parsed manifest object, updates the
435
- * sequence and timing values within the new manifest to ensure that it lines up with the
436
- * old.
437
- *
438
- * @param {Array} oldManifest - the old main manifest object
439
- * @param {Array} newManifest - the new main manifest object
440
- *
441
- * @return {Object} the updated new manifest object
442
- */
443
- var positionManifestOnTimeline = ({ oldManifest, newManifest }) => {
444
- const oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));
445
- const newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest));
446
- newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);
447
- updateSequenceNumbers({
448
- oldPlaylists,
449
- newPlaylists,
450
- timelineStarts: newManifest.timelineStarts
451
- });
452
- return newManifest;
399
+ const positionManifestOnTimeline = ({
400
+ oldManifest,
401
+ newManifest
402
+ }) => {
403
+ const oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));
404
+ const newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest));
405
+ newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);
406
+ updateSequenceNumbers({
407
+ oldPlaylists,
408
+ newPlaylists,
409
+ timelineStarts: newManifest.timelineStarts
410
+ });
411
+ return newManifest;
453
412
  };
454
- var generateSidxKey = (sidx) => sidx && sidx.uri + "-" + byteRangeToString(sidx.byterange);
455
- var mergeDiscontiguousPlaylists = (playlists) => {
456
- const playlistsByBaseUrl = playlists.reduce(function(acc, cur) {
457
- if (!acc[cur.attributes.baseUrl]) acc[cur.attributes.baseUrl] = [];
458
- acc[cur.attributes.baseUrl].push(cur);
459
- return acc;
460
- }, {});
461
- let allPlaylists = [];
462
- Object.values(playlistsByBaseUrl).forEach((playlistGroup) => {
463
- const mergedPlaylists = values(playlistGroup.reduce((acc, playlist) => {
464
- const name = playlist.attributes.id + (playlist.attributes.lang || "");
465
- if (!acc[name]) {
466
- acc[name] = playlist;
467
- acc[name].attributes.timelineStarts = [];
468
- } else {
469
- if (playlist.segments) {
470
- if (playlist.segments[0]) playlist.segments[0].discontinuity = true;
471
- acc[name].segments.push(...playlist.segments);
472
- }
473
- if (playlist.attributes.contentProtection) acc[name].attributes.contentProtection = playlist.attributes.contentProtection;
474
- }
475
- acc[name].attributes.timelineStarts.push({
476
- start: playlist.attributes.periodStart,
477
- timeline: playlist.attributes.periodStart
478
- });
479
- return acc;
480
- }, {}));
481
- allPlaylists = allPlaylists.concat(mergedPlaylists);
482
- });
483
- return allPlaylists.map((playlist) => {
484
- playlist.discontinuityStarts = findIndexes(playlist.segments || [], "discontinuity");
485
- return playlist;
486
- });
413
+ const generateSidxKey = (sidx) => sidx && sidx.uri + "-" + byteRangeToString(sidx.byterange);
414
+ const mergeDiscontiguousPlaylists = (playlists) => {
415
+ const playlistsByBaseUrl = playlists.reduce(function(acc, cur) {
416
+ if (!acc[cur.attributes.baseUrl]) {
417
+ acc[cur.attributes.baseUrl] = [];
418
+ }
419
+ acc[cur.attributes.baseUrl].push(cur);
420
+ return acc;
421
+ }, {});
422
+ let allPlaylists = [];
423
+ Object.values(playlistsByBaseUrl).forEach((playlistGroup) => {
424
+ const mergedPlaylists = values(playlistGroup.reduce((acc, playlist) => {
425
+ const name = playlist.attributes.id + (playlist.attributes.lang || "");
426
+ if (!acc[name]) {
427
+ acc[name] = playlist;
428
+ acc[name].attributes.timelineStarts = [];
429
+ } else {
430
+ if (playlist.segments) {
431
+ if (playlist.segments[0]) {
432
+ playlist.segments[0].discontinuity = true;
433
+ }
434
+ acc[name].segments.push(...playlist.segments);
435
+ }
436
+ if (playlist.attributes.contentProtection) {
437
+ acc[name].attributes.contentProtection = playlist.attributes.contentProtection;
438
+ }
439
+ }
440
+ acc[name].attributes.timelineStarts.push({
441
+ // Although they represent the same number, it's important to have both to make it
442
+ // compatible with HLS potentially having a similar attribute.
443
+ start: playlist.attributes.periodStart,
444
+ timeline: playlist.attributes.periodStart
445
+ });
446
+ return acc;
447
+ }, {}));
448
+ allPlaylists = allPlaylists.concat(mergedPlaylists);
449
+ });
450
+ return allPlaylists.map((playlist) => {
451
+ playlist.discontinuityStarts = findIndexes(playlist.segments || [], "discontinuity");
452
+ return playlist;
453
+ });
487
454
  };
488
- var addSidxSegmentsToPlaylist = (playlist, sidxMapping) => {
489
- const sidxKey = generateSidxKey(playlist.sidx);
490
- const sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;
491
- if (sidxMatch) addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);
492
- return playlist;
455
+ const addSidxSegmentsToPlaylist = (playlist, sidxMapping) => {
456
+ const sidxKey = generateSidxKey(playlist.sidx);
457
+ const sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;
458
+ if (sidxMatch) {
459
+ addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);
460
+ }
461
+ return playlist;
493
462
  };
494
- var addSidxSegmentsToPlaylists = (playlists, sidxMapping = {}) => {
495
- if (!Object.keys(sidxMapping).length) return playlists;
496
- for (const i in playlists) playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);
497
- return playlists;
463
+ const addSidxSegmentsToPlaylists = (playlists, sidxMapping = {}) => {
464
+ if (!Object.keys(sidxMapping).length) {
465
+ return playlists;
466
+ }
467
+ for (const i in playlists) {
468
+ playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);
469
+ }
470
+ return playlists;
498
471
  };
499
- var formatAudioPlaylist = ({ attributes, segments, sidx, mediaSequence, discontinuitySequence, discontinuityStarts }, isAudioOnly) => {
500
- const playlist = {
501
- attributes: {
502
- NAME: attributes.id,
503
- BANDWIDTH: attributes.bandwidth,
504
- CODECS: attributes.codecs,
505
- ["PROGRAM-ID"]: 1
506
- },
507
- uri: "",
508
- endList: attributes.type === "static",
509
- timeline: attributes.periodStart,
510
- resolvedUri: attributes.baseUrl || "",
511
- targetDuration: attributes.duration,
512
- discontinuitySequence,
513
- discontinuityStarts,
514
- timelineStarts: attributes.timelineStarts,
515
- mediaSequence,
516
- segments
517
- };
518
- if (attributes.contentProtection) playlist.contentProtection = attributes.contentProtection;
519
- if (attributes.serviceLocation) playlist.attributes.serviceLocation = attributes.serviceLocation;
520
- if (sidx) playlist.sidx = sidx;
521
- if (isAudioOnly) {
522
- playlist.attributes.AUDIO = "audio";
523
- playlist.attributes.SUBTITLES = "subs";
524
- }
525
- return playlist;
472
+ const formatAudioPlaylist = ({
473
+ attributes,
474
+ segments,
475
+ sidx,
476
+ mediaSequence,
477
+ discontinuitySequence,
478
+ discontinuityStarts
479
+ }, isAudioOnly) => {
480
+ const playlist = {
481
+ attributes: {
482
+ NAME: attributes.id,
483
+ BANDWIDTH: attributes.bandwidth,
484
+ CODECS: attributes.codecs,
485
+ ["PROGRAM-ID"]: 1
486
+ },
487
+ uri: "",
488
+ endList: attributes.type === "static",
489
+ timeline: attributes.periodStart,
490
+ resolvedUri: attributes.baseUrl || "",
491
+ targetDuration: attributes.duration,
492
+ discontinuitySequence,
493
+ discontinuityStarts,
494
+ timelineStarts: attributes.timelineStarts,
495
+ mediaSequence,
496
+ segments
497
+ };
498
+ if (attributes.contentProtection) {
499
+ playlist.contentProtection = attributes.contentProtection;
500
+ }
501
+ if (attributes.serviceLocation) {
502
+ playlist.attributes.serviceLocation = attributes.serviceLocation;
503
+ }
504
+ if (sidx) {
505
+ playlist.sidx = sidx;
506
+ }
507
+ if (isAudioOnly) {
508
+ playlist.attributes.AUDIO = "audio";
509
+ playlist.attributes.SUBTITLES = "subs";
510
+ }
511
+ return playlist;
526
512
  };
527
- var formatVttPlaylist = ({ attributes, segments, mediaSequence, discontinuityStarts, discontinuitySequence }) => {
528
- if (typeof segments === "undefined") {
529
- segments = [{
530
- uri: attributes.baseUrl,
531
- timeline: attributes.periodStart,
532
- resolvedUri: attributes.baseUrl || "",
533
- duration: attributes.sourceDuration,
534
- number: 0
535
- }];
536
- attributes.duration = attributes.sourceDuration;
537
- }
538
- const m3u8Attributes = {
539
- NAME: attributes.id,
540
- BANDWIDTH: attributes.bandwidth,
541
- ["PROGRAM-ID"]: 1
542
- };
543
- if (attributes.codecs) m3u8Attributes.CODECS = attributes.codecs;
544
- const vttPlaylist = {
545
- attributes: m3u8Attributes,
546
- uri: "",
547
- endList: attributes.type === "static",
548
- timeline: attributes.periodStart,
549
- resolvedUri: attributes.baseUrl || "",
550
- targetDuration: attributes.duration,
551
- timelineStarts: attributes.timelineStarts,
552
- discontinuityStarts,
553
- discontinuitySequence,
554
- mediaSequence,
555
- segments
556
- };
557
- if (attributes.serviceLocation) vttPlaylist.attributes.serviceLocation = attributes.serviceLocation;
558
- return vttPlaylist;
513
+ const formatVttPlaylist = ({
514
+ attributes,
515
+ segments,
516
+ mediaSequence,
517
+ discontinuityStarts,
518
+ discontinuitySequence
519
+ }) => {
520
+ if (typeof segments === "undefined") {
521
+ segments = [{
522
+ uri: attributes.baseUrl,
523
+ timeline: attributes.periodStart,
524
+ resolvedUri: attributes.baseUrl || "",
525
+ duration: attributes.sourceDuration,
526
+ number: 0
527
+ }];
528
+ attributes.duration = attributes.sourceDuration;
529
+ }
530
+ const m3u8Attributes = {
531
+ NAME: attributes.id,
532
+ BANDWIDTH: attributes.bandwidth,
533
+ ["PROGRAM-ID"]: 1
534
+ };
535
+ if (attributes.codecs) {
536
+ m3u8Attributes.CODECS = attributes.codecs;
537
+ }
538
+ const vttPlaylist = {
539
+ attributes: m3u8Attributes,
540
+ uri: "",
541
+ endList: attributes.type === "static",
542
+ timeline: attributes.periodStart,
543
+ resolvedUri: attributes.baseUrl || "",
544
+ targetDuration: attributes.duration,
545
+ timelineStarts: attributes.timelineStarts,
546
+ discontinuityStarts,
547
+ discontinuitySequence,
548
+ mediaSequence,
549
+ segments
550
+ };
551
+ if (attributes.serviceLocation) {
552
+ vttPlaylist.attributes.serviceLocation = attributes.serviceLocation;
553
+ }
554
+ return vttPlaylist;
559
555
  };
560
- var organizeAudioPlaylists = (playlists, sidxMapping = {}, isAudioOnly = false) => {
561
- let mainPlaylist;
562
- const formattedPlaylists = playlists.reduce((a, playlist) => {
563
- const role = playlist.attributes.role && playlist.attributes.role.value || "";
564
- const language = playlist.attributes.lang || "";
565
- let label = playlist.attributes.label || "main";
566
- if (language && !playlist.attributes.label) {
567
- const roleLabel = role ? ` (${role})` : "";
568
- label = `${playlist.attributes.lang}${roleLabel}`;
569
- }
570
- if (!a[label]) a[label] = {
571
- language,
572
- autoselect: true,
573
- default: role === "main",
574
- playlists: [],
575
- uri: ""
576
- };
577
- const formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);
578
- a[label].playlists.push(formatted);
579
- if (typeof mainPlaylist === "undefined" && role === "main") {
580
- mainPlaylist = playlist;
581
- mainPlaylist.default = true;
582
- }
583
- return a;
584
- }, {});
585
- if (!mainPlaylist) {
586
- const firstLabel = Object.keys(formattedPlaylists)[0];
587
- formattedPlaylists[firstLabel].default = true;
588
- }
589
- return formattedPlaylists;
556
+ const organizeAudioPlaylists = (playlists, sidxMapping = {}, isAudioOnly = false) => {
557
+ let mainPlaylist;
558
+ const formattedPlaylists = playlists.reduce((a, playlist) => {
559
+ const role = playlist.attributes.role && playlist.attributes.role.value || "";
560
+ const language = playlist.attributes.lang || "";
561
+ let label = playlist.attributes.label || "main";
562
+ if (language && !playlist.attributes.label) {
563
+ const roleLabel = role ? ` (${role})` : "";
564
+ label = `${playlist.attributes.lang}${roleLabel}`;
565
+ }
566
+ if (!a[label]) {
567
+ a[label] = {
568
+ language,
569
+ autoselect: true,
570
+ default: role === "main",
571
+ playlists: [],
572
+ uri: ""
573
+ };
574
+ }
575
+ const formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);
576
+ a[label].playlists.push(formatted);
577
+ if (typeof mainPlaylist === "undefined" && role === "main") {
578
+ mainPlaylist = playlist;
579
+ mainPlaylist.default = true;
580
+ }
581
+ return a;
582
+ }, {});
583
+ if (!mainPlaylist) {
584
+ const firstLabel = Object.keys(formattedPlaylists)[0];
585
+ formattedPlaylists[firstLabel].default = true;
586
+ }
587
+ return formattedPlaylists;
590
588
  };
591
- var organizeVttPlaylists = (playlists, sidxMapping = {}) => {
592
- return playlists.reduce((a, playlist) => {
593
- const label = playlist.attributes.label || playlist.attributes.lang || "text";
594
- const language = playlist.attributes.lang || "und";
595
- if (!a[label]) a[label] = {
596
- language,
597
- default: false,
598
- autoselect: false,
599
- playlists: [],
600
- uri: ""
601
- };
602
- a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));
603
- return a;
604
- }, {});
589
+ const organizeVttPlaylists = (playlists, sidxMapping = {}) => {
590
+ return playlists.reduce((a, playlist) => {
591
+ const label = playlist.attributes.label || playlist.attributes.lang || "text";
592
+ const language = playlist.attributes.lang || "und";
593
+ if (!a[label]) {
594
+ a[label] = {
595
+ language,
596
+ default: false,
597
+ autoselect: false,
598
+ playlists: [],
599
+ uri: ""
600
+ };
601
+ }
602
+ a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));
603
+ return a;
604
+ }, {});
605
605
  };
606
- var organizeCaptionServices = (captionServices) => captionServices.reduce((svcObj, svc) => {
607
- if (!svc) return svcObj;
608
- svc.forEach((service) => {
609
- const { channel, language } = service;
610
- svcObj[language] = {
611
- autoselect: false,
612
- default: false,
613
- instreamId: channel,
614
- language
615
- };
616
- if (service.hasOwnProperty("aspectRatio")) svcObj[language].aspectRatio = service.aspectRatio;
617
- if (service.hasOwnProperty("easyReader")) svcObj[language].easyReader = service.easyReader;
618
- if (service.hasOwnProperty("3D")) svcObj[language]["3D"] = service["3D"];
619
- });
620
- return svcObj;
606
+ const organizeCaptionServices = (captionServices) => captionServices.reduce((svcObj, svc) => {
607
+ if (!svc) {
608
+ return svcObj;
609
+ }
610
+ svc.forEach((service) => {
611
+ const {
612
+ channel,
613
+ language
614
+ } = service;
615
+ svcObj[language] = {
616
+ autoselect: false,
617
+ default: false,
618
+ instreamId: channel,
619
+ language
620
+ };
621
+ if (service.hasOwnProperty("aspectRatio")) {
622
+ svcObj[language].aspectRatio = service.aspectRatio;
623
+ }
624
+ if (service.hasOwnProperty("easyReader")) {
625
+ svcObj[language].easyReader = service.easyReader;
626
+ }
627
+ if (service.hasOwnProperty("3D")) {
628
+ svcObj[language]["3D"] = service["3D"];
629
+ }
630
+ });
631
+ return svcObj;
621
632
  }, {});
622
- var formatVideoPlaylist = ({ attributes, segments, sidx, discontinuityStarts }) => {
623
- const playlist = {
624
- attributes: {
625
- NAME: attributes.id,
626
- AUDIO: "audio",
627
- SUBTITLES: "subs",
628
- RESOLUTION: {
629
- width: attributes.width,
630
- height: attributes.height
631
- },
632
- CODECS: attributes.codecs,
633
- BANDWIDTH: attributes.bandwidth,
634
- ["PROGRAM-ID"]: 1
635
- },
636
- uri: "",
637
- endList: attributes.type === "static",
638
- timeline: attributes.periodStart,
639
- resolvedUri: attributes.baseUrl || "",
640
- targetDuration: attributes.duration,
641
- discontinuityStarts,
642
- timelineStarts: attributes.timelineStarts,
643
- segments
644
- };
645
- if (attributes.frameRate) playlist.attributes["FRAME-RATE"] = attributes.frameRate;
646
- if (attributes.contentProtection) playlist.contentProtection = attributes.contentProtection;
647
- if (attributes.serviceLocation) playlist.attributes.serviceLocation = attributes.serviceLocation;
648
- if (sidx) playlist.sidx = sidx;
649
- return playlist;
633
+ const formatVideoPlaylist = ({
634
+ attributes,
635
+ segments,
636
+ sidx,
637
+ discontinuityStarts
638
+ }) => {
639
+ const playlist = {
640
+ attributes: {
641
+ NAME: attributes.id,
642
+ AUDIO: "audio",
643
+ SUBTITLES: "subs",
644
+ RESOLUTION: {
645
+ width: attributes.width,
646
+ height: attributes.height
647
+ },
648
+ CODECS: attributes.codecs,
649
+ BANDWIDTH: attributes.bandwidth,
650
+ ["PROGRAM-ID"]: 1
651
+ },
652
+ uri: "",
653
+ endList: attributes.type === "static",
654
+ timeline: attributes.periodStart,
655
+ resolvedUri: attributes.baseUrl || "",
656
+ targetDuration: attributes.duration,
657
+ discontinuityStarts,
658
+ timelineStarts: attributes.timelineStarts,
659
+ segments
660
+ };
661
+ if (attributes.frameRate) {
662
+ playlist.attributes["FRAME-RATE"] = attributes.frameRate;
663
+ }
664
+ if (attributes.contentProtection) {
665
+ playlist.contentProtection = attributes.contentProtection;
666
+ }
667
+ if (attributes.serviceLocation) {
668
+ playlist.attributes.serviceLocation = attributes.serviceLocation;
669
+ }
670
+ if (sidx) {
671
+ playlist.sidx = sidx;
672
+ }
673
+ return playlist;
674
+ };
675
+ const videoOnly = ({
676
+ attributes
677
+ }) => attributes.mimeType === "video/mp4" || attributes.mimeType === "video/webm" || attributes.contentType === "video";
678
+ const audioOnly = ({
679
+ attributes
680
+ }) => attributes.mimeType === "audio/mp4" || attributes.mimeType === "audio/webm" || attributes.contentType === "audio";
681
+ const vttOnly = ({
682
+ attributes
683
+ }) => attributes.mimeType === "text/vtt" || attributes.contentType === "text";
684
+ const addMediaSequenceValues = (playlists, timelineStarts) => {
685
+ playlists.forEach((playlist) => {
686
+ playlist.mediaSequence = 0;
687
+ playlist.discontinuitySequence = timelineStarts.findIndex(function({
688
+ timeline
689
+ }) {
690
+ return timeline === playlist.timeline;
691
+ });
692
+ if (!playlist.segments) {
693
+ return;
694
+ }
695
+ playlist.segments.forEach((segment, index) => {
696
+ segment.number = index;
697
+ });
698
+ });
650
699
  };
651
- var videoOnly = ({ attributes }) => attributes.mimeType === "video/mp4" || attributes.mimeType === "video/webm" || attributes.contentType === "video";
652
- var audioOnly = ({ attributes }) => attributes.mimeType === "audio/mp4" || attributes.mimeType === "audio/webm" || attributes.contentType === "audio";
653
- var vttOnly = ({ attributes }) => attributes.mimeType === "text/vtt" || attributes.contentType === "text";
654
- /**
655
- * Contains start and timeline properties denoting a timeline start. For DASH, these will
656
- * be the same number.
657
- *
658
- * @typedef {Object} TimelineStart
659
- * @property {number} start - the start time of the timeline
660
- * @property {number} timeline - the timeline number
661
- */
662
- /**
663
- * Adds appropriate media and discontinuity sequence values to the segments and playlists.
664
- *
665
- * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a
666
- * DASH specific attribute used in constructing segment URI's from templates. However, from
667
- * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`
668
- * value, which should start at the original media sequence value (or 0) and increment by 1
669
- * for each segment thereafter. Since DASH's `startNumber` values are independent per
670
- * period, it doesn't make sense to use it for `number`. Instead, assume everything starts
671
- * from a 0 mediaSequence value and increment from there.
672
- *
673
- * Note that VHS currently doesn't use the `number` property, but it can be helpful for
674
- * debugging and making sense of the manifest.
675
- *
676
- * For live playlists, to account for values increasing in manifests when periods are
677
- * removed on refreshes, merging logic should be used to update the numbers to their
678
- * appropriate values (to ensure they're sequential and increasing).
679
- *
680
- * @param {Object[]} playlists - the playlists to update
681
- * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest
682
- */
683
- var addMediaSequenceValues = (playlists, timelineStarts) => {
684
- playlists.forEach((playlist) => {
685
- playlist.mediaSequence = 0;
686
- playlist.discontinuitySequence = timelineStarts.findIndex(function({ timeline }) {
687
- return timeline === playlist.timeline;
688
- });
689
- if (!playlist.segments) return;
690
- playlist.segments.forEach((segment, index) => {
691
- segment.number = index;
692
- });
693
- });
700
+ const flattenMediaGroupPlaylists = (mediaGroupObject) => {
701
+ if (!mediaGroupObject) {
702
+ return [];
703
+ }
704
+ return Object.keys(mediaGroupObject).reduce((acc, label) => {
705
+ const labelContents = mediaGroupObject[label];
706
+ return acc.concat(labelContents.playlists);
707
+ }, []);
694
708
  };
695
- /**
696
- * Given a media group object, flattens all playlists within the media group into a single
697
- * array.
698
- *
699
- * @param {Object} mediaGroupObject - the media group object
700
- *
701
- * @return {Object[]}
702
- * The media group playlists
703
- */
704
- var flattenMediaGroupPlaylists = (mediaGroupObject) => {
705
- if (!mediaGroupObject) return [];
706
- return Object.keys(mediaGroupObject).reduce((acc, label) => {
707
- const labelContents = mediaGroupObject[label];
708
- return acc.concat(labelContents.playlists);
709
- }, []);
709
+ const toM3u8 = ({
710
+ dashPlaylists,
711
+ locations,
712
+ contentSteering,
713
+ sidxMapping = {},
714
+ previousManifest,
715
+ eventStream
716
+ }) => {
717
+ if (!dashPlaylists.length) {
718
+ return {};
719
+ }
720
+ const {
721
+ sourceDuration: duration,
722
+ type,
723
+ suggestedPresentationDelay,
724
+ minimumUpdatePeriod
725
+ } = dashPlaylists[0].attributes;
726
+ const videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);
727
+ const audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));
728
+ const vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));
729
+ const captions = dashPlaylists.map((playlist) => playlist.attributes.captionServices).filter(Boolean);
730
+ const manifest = {
731
+ allowCache: true,
732
+ discontinuityStarts: [],
733
+ segments: [],
734
+ endList: true,
735
+ mediaGroups: {
736
+ AUDIO: {},
737
+ VIDEO: {},
738
+ ["CLOSED-CAPTIONS"]: {},
739
+ SUBTITLES: {}
740
+ },
741
+ uri: "",
742
+ duration,
743
+ playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)
744
+ };
745
+ if (minimumUpdatePeriod >= 0) {
746
+ manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1e3;
747
+ }
748
+ if (locations) {
749
+ manifest.locations = locations;
750
+ }
751
+ if (contentSteering) {
752
+ manifest.contentSteering = contentSteering;
753
+ }
754
+ if (type === "dynamic") {
755
+ manifest.suggestedPresentationDelay = suggestedPresentationDelay;
756
+ }
757
+ if (eventStream && eventStream.length > 0) {
758
+ manifest.eventStream = eventStream;
759
+ }
760
+ const isAudioOnly = manifest.playlists.length === 0;
761
+ const organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;
762
+ const organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;
763
+ const formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));
764
+ const playlistTimelineStarts = formattedPlaylists.map(({
765
+ timelineStarts
766
+ }) => timelineStarts);
767
+ manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);
768
+ addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);
769
+ if (organizedAudioGroup) {
770
+ manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;
771
+ }
772
+ if (organizedVttGroup) {
773
+ manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;
774
+ }
775
+ if (captions.length) {
776
+ manifest.mediaGroups["CLOSED-CAPTIONS"].cc = organizeCaptionServices(captions);
777
+ }
778
+ if (previousManifest) {
779
+ return positionManifestOnTimeline({
780
+ oldManifest: previousManifest,
781
+ newManifest: manifest
782
+ });
783
+ }
784
+ return manifest;
710
785
  };
711
- var toM3u8 = ({ dashPlaylists, locations, contentSteering, sidxMapping = {}, previousManifest, eventStream }) => {
712
- if (!dashPlaylists.length) return {};
713
- const { sourceDuration: duration, type, suggestedPresentationDelay, minimumUpdatePeriod } = dashPlaylists[0].attributes;
714
- const videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);
715
- const audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));
716
- const vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));
717
- const captions = dashPlaylists.map((playlist) => playlist.attributes.captionServices).filter(Boolean);
718
- const manifest = {
719
- allowCache: true,
720
- discontinuityStarts: [],
721
- segments: [],
722
- endList: true,
723
- mediaGroups: {
724
- AUDIO: {},
725
- VIDEO: {},
726
- ["CLOSED-CAPTIONS"]: {},
727
- SUBTITLES: {}
728
- },
729
- uri: "",
730
- duration,
731
- playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)
732
- };
733
- if (minimumUpdatePeriod >= 0) manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1e3;
734
- if (locations) manifest.locations = locations;
735
- if (contentSteering) manifest.contentSteering = contentSteering;
736
- if (type === "dynamic") manifest.suggestedPresentationDelay = suggestedPresentationDelay;
737
- if (eventStream && eventStream.length > 0) manifest.eventStream = eventStream;
738
- const isAudioOnly = manifest.playlists.length === 0;
739
- const organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;
740
- const organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;
741
- const formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));
742
- manifest.timelineStarts = getUniqueTimelineStarts(formattedPlaylists.map(({ timelineStarts }) => timelineStarts));
743
- addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);
744
- if (organizedAudioGroup) manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;
745
- if (organizedVttGroup) manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;
746
- if (captions.length) manifest.mediaGroups["CLOSED-CAPTIONS"].cc = organizeCaptionServices(captions);
747
- if (previousManifest) return positionManifestOnTimeline({
748
- oldManifest: previousManifest,
749
- newManifest: manifest
750
- });
751
- return manifest;
786
+ const getLiveRValue = (attributes, time, duration) => {
787
+ const {
788
+ NOW,
789
+ clientOffset,
790
+ availabilityStartTime,
791
+ timescale = 1,
792
+ periodStart = 0,
793
+ minimumUpdatePeriod = 0
794
+ } = attributes;
795
+ const now = (NOW + clientOffset) / 1e3;
796
+ const periodStartWC = availabilityStartTime + periodStart;
797
+ const periodEndWC = now + minimumUpdatePeriod;
798
+ const periodDuration = periodEndWC - periodStartWC;
799
+ return Math.ceil((periodDuration * timescale - time) / duration);
752
800
  };
753
- /**
754
- * Calculates the R (repetition) value for a live stream (for the final segment
755
- * in a manifest where the r value is negative 1)
756
- *
757
- * @param {Object} attributes
758
- * Object containing all inherited attributes from parent elements with attribute
759
- * names as keys
760
- * @param {number} time
761
- * current time (typically the total time up until the final segment)
762
- * @param {number} duration
763
- * duration property for the given <S />
764
- *
765
- * @return {number}
766
- * R value to reach the end of the given period
767
- */
768
- var getLiveRValue = (attributes, time, duration) => {
769
- const { NOW, clientOffset, availabilityStartTime, timescale = 1, periodStart = 0, minimumUpdatePeriod = 0 } = attributes;
770
- const now = (NOW + clientOffset) / 1e3;
771
- const periodStartWC = availabilityStartTime + periodStart;
772
- const periodDuration = now + minimumUpdatePeriod - periodStartWC;
773
- return Math.ceil((periodDuration * timescale - time) / duration);
801
+ const parseByTimeline = (attributes, segmentTimeline) => {
802
+ const {
803
+ type,
804
+ minimumUpdatePeriod = 0,
805
+ media = "",
806
+ sourceDuration,
807
+ timescale = 1,
808
+ startNumber = 1,
809
+ periodStart: timeline
810
+ } = attributes;
811
+ const segments = [];
812
+ let time = -1;
813
+ for (let sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {
814
+ const S = segmentTimeline[sIndex];
815
+ const duration = S.d;
816
+ const repeat = S.r || 0;
817
+ const segmentTime = S.t || 0;
818
+ if (time < 0) {
819
+ time = segmentTime;
820
+ }
821
+ if (segmentTime && segmentTime > time) {
822
+ time = segmentTime;
823
+ }
824
+ let count;
825
+ if (repeat < 0) {
826
+ const nextS = sIndex + 1;
827
+ if (nextS === segmentTimeline.length) {
828
+ if (type === "dynamic" && minimumUpdatePeriod > 0 && media.indexOf("$Number$") > 0) {
829
+ count = getLiveRValue(attributes, time, duration);
830
+ } else {
831
+ count = (sourceDuration * timescale - time) / duration;
832
+ }
833
+ } else {
834
+ count = (segmentTimeline[nextS].t - time) / duration;
835
+ }
836
+ } else {
837
+ count = repeat + 1;
838
+ }
839
+ const end = startNumber + segments.length + count;
840
+ let number = startNumber + segments.length;
841
+ while (number < end) {
842
+ segments.push({
843
+ number,
844
+ duration: duration / timescale,
845
+ time,
846
+ timeline
847
+ });
848
+ time += duration;
849
+ number++;
850
+ }
851
+ }
852
+ return segments;
774
853
  };
775
- /**
776
- * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment
777
- * timing and duration
778
- *
779
- * @param {Object} attributes
780
- * Object containing all inherited attributes from parent elements with attribute
781
- * names as keys
782
- * @param {Object[]} segmentTimeline
783
- * List of objects representing the attributes of each S element contained within
784
- *
785
- * @return {{number: number, duration: number, time: number, timeline: number}[]}
786
- * List of Objects with segment timing and duration info
787
- */
788
- var parseByTimeline = (attributes, segmentTimeline) => {
789
- const { type, minimumUpdatePeriod = 0, media = "", sourceDuration, timescale = 1, startNumber = 1, periodStart: timeline } = attributes;
790
- const segments = [];
791
- let time = -1;
792
- for (let sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {
793
- const S = segmentTimeline[sIndex];
794
- const duration = S.d;
795
- const repeat = S.r || 0;
796
- const segmentTime = S.t || 0;
797
- if (time < 0) time = segmentTime;
798
- if (segmentTime && segmentTime > time) time = segmentTime;
799
- let count;
800
- if (repeat < 0) {
801
- const nextS = sIndex + 1;
802
- if (nextS === segmentTimeline.length) {
803
- if (type === "dynamic" && minimumUpdatePeriod > 0 && media.indexOf("$Number$") > 0) count = getLiveRValue(attributes, time, duration);
804
- else count = (sourceDuration * timescale - time) / duration;
805
- } else count = (segmentTimeline[nextS].t - time) / duration;
806
- } else count = repeat + 1;
807
- const end = startNumber + segments.length + count;
808
- let number = startNumber + segments.length;
809
- while (number < end) {
810
- segments.push({
811
- number,
812
- duration: duration / timescale,
813
- time,
814
- timeline
815
- });
816
- time += duration;
817
- number++;
818
- }
819
- }
820
- return segments;
854
+ const identifierPattern = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g;
855
+ const identifierReplacement = (values2) => (match, identifier, format, width) => {
856
+ if (match === "$$") {
857
+ return "$";
858
+ }
859
+ if (typeof values2[identifier] === "undefined") {
860
+ return match;
861
+ }
862
+ const value = "" + values2[identifier];
863
+ if (identifier === "RepresentationID") {
864
+ return value;
865
+ }
866
+ if (!format) {
867
+ width = 1;
868
+ } else {
869
+ width = parseInt(width, 10);
870
+ }
871
+ if (value.length >= width) {
872
+ return value;
873
+ }
874
+ return `${new Array(width - value.length + 1).join("0")}${value}`;
821
875
  };
822
- var identifierPattern = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g;
823
- /**
824
- * Replaces template identifiers with corresponding values. To be used as the callback
825
- * for String.prototype.replace
826
- *
827
- * @name replaceCallback
828
- * @function
829
- * @param {string} match
830
- * Entire match of identifier
831
- * @param {string} identifier
832
- * Name of matched identifier
833
- * @param {string} format
834
- * Format tag string. Its presence indicates that padding is expected
835
- * @param {string} width
836
- * Desired length of the replaced value. Values less than this width shall be left
837
- * zero padded
838
- * @return {string}
839
- * Replacement for the matched identifier
840
- */
841
- /**
842
- * Returns a function to be used as a callback for String.prototype.replace to replace
843
- * template identifiers
844
- *
845
- * @param {Obect} values
846
- * Object containing values that shall be used to replace known identifiers
847
- * @param {number} values.RepresentationID
848
- * Value of the Representation@id attribute
849
- * @param {number} values.Number
850
- * Number of the corresponding segment
851
- * @param {number} values.Bandwidth
852
- * Value of the Representation@bandwidth attribute.
853
- * @param {number} values.Time
854
- * Timestamp value of the corresponding segment
855
- * @return {replaceCallback}
856
- * Callback to be used with String.prototype.replace to replace identifiers
857
- */
858
- var identifierReplacement = (values) => (match, identifier, format, width) => {
859
- if (match === "$$") return "$";
860
- if (typeof values[identifier] === "undefined") return match;
861
- const value = "" + values[identifier];
862
- if (identifier === "RepresentationID") return value;
863
- if (!format) width = 1;
864
- else width = parseInt(width, 10);
865
- if (value.length >= width) return value;
866
- return `${new Array(width - value.length + 1).join("0")}${value}`;
876
+ const constructTemplateUrl = (url, values2) => url.replace(identifierPattern, identifierReplacement(values2));
877
+ const parseTemplateInfo = (attributes, segmentTimeline) => {
878
+ if (!attributes.duration && !segmentTimeline) {
879
+ return [{
880
+ number: attributes.startNumber || 1,
881
+ duration: attributes.sourceDuration,
882
+ time: 0,
883
+ timeline: attributes.periodStart
884
+ }];
885
+ }
886
+ if (attributes.duration) {
887
+ return parseByDuration(attributes);
888
+ }
889
+ return parseByTimeline(attributes, segmentTimeline);
867
890
  };
868
- /**
869
- * Constructs a segment url from a template string
870
- *
871
- * @param {string} url
872
- * Template string to construct url from
873
- * @param {Obect} values
874
- * Object containing values that shall be used to replace known identifiers
875
- * @param {number} values.RepresentationID
876
- * Value of the Representation@id attribute
877
- * @param {number} values.Number
878
- * Number of the corresponding segment
879
- * @param {number} values.Bandwidth
880
- * Value of the Representation@bandwidth attribute.
881
- * @param {number} values.Time
882
- * Timestamp value of the corresponding segment
883
- * @return {string}
884
- * Segment url with identifiers replaced
885
- */
886
- var constructTemplateUrl = (url, values) => url.replace(identifierPattern, identifierReplacement(values));
887
- /**
888
- * Generates a list of objects containing timing and duration information about each
889
- * segment needed to generate segment uris and the complete segment object
890
- *
891
- * @param {Object} attributes
892
- * Object containing all inherited attributes from parent elements with attribute
893
- * names as keys
894
- * @param {Object[]|undefined} segmentTimeline
895
- * List of objects representing the attributes of each S element contained within
896
- * the SegmentTimeline element
897
- * @return {{number: number, duration: number, time: number, timeline: number}[]}
898
- * List of Objects with segment timing and duration info
899
- */
900
- var parseTemplateInfo = (attributes, segmentTimeline) => {
901
- if (!attributes.duration && !segmentTimeline) return [{
902
- number: attributes.startNumber || 1,
903
- duration: attributes.sourceDuration,
904
- time: 0,
905
- timeline: attributes.periodStart
906
- }];
907
- if (attributes.duration) return parseByDuration(attributes);
908
- return parseByTimeline(attributes, segmentTimeline);
891
+ const segmentsFromTemplate = (attributes, segmentTimeline) => {
892
+ const templateValues = {
893
+ RepresentationID: attributes.id,
894
+ Bandwidth: attributes.bandwidth || 0
895
+ };
896
+ const {
897
+ initialization = {
898
+ sourceURL: "",
899
+ range: ""
900
+ }
901
+ } = attributes;
902
+ const mapSegment = urlTypeToSegment({
903
+ baseUrl: attributes.baseUrl,
904
+ source: constructTemplateUrl(initialization.sourceURL, templateValues),
905
+ range: initialization.range
906
+ });
907
+ const segments = parseTemplateInfo(attributes, segmentTimeline);
908
+ return segments.map((segment) => {
909
+ templateValues.Number = segment.number;
910
+ templateValues.Time = segment.time;
911
+ const uri = constructTemplateUrl(attributes.media || "", templateValues);
912
+ const timescale = attributes.timescale || 1;
913
+ const presentationTimeOffset = attributes.presentationTimeOffset || 0;
914
+ const presentationTime = (
915
+ // Even if the @t attribute is not specified for the segment, segment.time is
916
+ // calculated in mpd-parser prior to this, so it's assumed to be available.
917
+ attributes.periodStart + (segment.time - presentationTimeOffset) / timescale
918
+ );
919
+ const map = {
920
+ uri,
921
+ timeline: segment.timeline,
922
+ duration: segment.duration,
923
+ resolvedUri: resolveUrl(attributes.baseUrl || "", uri),
924
+ map: mapSegment,
925
+ number: segment.number,
926
+ presentationTime
927
+ };
928
+ return map;
929
+ });
909
930
  };
910
- /**
911
- * Generates a list of segments using information provided by the SegmentTemplate element
912
- *
913
- * @param {Object} attributes
914
- * Object containing all inherited attributes from parent elements with attribute
915
- * names as keys
916
- * @param {Object[]|undefined} segmentTimeline
917
- * List of objects representing the attributes of each S element contained within
918
- * the SegmentTimeline element
919
- * @return {Object[]}
920
- * List of segment objects
921
- */
922
- var segmentsFromTemplate = (attributes, segmentTimeline) => {
923
- const templateValues = {
924
- RepresentationID: attributes.id,
925
- Bandwidth: attributes.bandwidth || 0
926
- };
927
- const { initialization = {
928
- sourceURL: "",
929
- range: ""
930
- } } = attributes;
931
- const mapSegment = urlTypeToSegment({
932
- baseUrl: attributes.baseUrl,
933
- source: constructTemplateUrl(initialization.sourceURL, templateValues),
934
- range: initialization.range
935
- });
936
- return parseTemplateInfo(attributes, segmentTimeline).map((segment) => {
937
- templateValues.Number = segment.number;
938
- templateValues.Time = segment.time;
939
- const uri = constructTemplateUrl(attributes.media || "", templateValues);
940
- const timescale = attributes.timescale || 1;
941
- const presentationTimeOffset = attributes.presentationTimeOffset || 0;
942
- const presentationTime = attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;
943
- return {
944
- uri,
945
- timeline: segment.timeline,
946
- duration: segment.duration,
947
- resolvedUri: resolveUrl(attributes.baseUrl || "", uri),
948
- map: mapSegment,
949
- number: segment.number,
950
- presentationTime
951
- };
952
- });
931
+ const SegmentURLToSegmentObject = (attributes, segmentUrl) => {
932
+ const {
933
+ baseUrl,
934
+ initialization = {}
935
+ } = attributes;
936
+ const initSegment = urlTypeToSegment({
937
+ baseUrl,
938
+ source: initialization.sourceURL,
939
+ range: initialization.range
940
+ });
941
+ const segment = urlTypeToSegment({
942
+ baseUrl,
943
+ source: segmentUrl.media,
944
+ range: segmentUrl.mediaRange
945
+ });
946
+ segment.map = initSegment;
947
+ return segment;
953
948
  };
954
- /**
955
- * Converts a <SegmentUrl> (of type URLType from the DASH spec 5.3.9.2 Table 14)
956
- * to an object that matches the output of a segment in videojs/mpd-parser
957
- *
958
- * @param {Object} attributes
959
- * Object containing all inherited attributes from parent elements with attribute
960
- * names as keys
961
- * @param {Object} segmentUrl
962
- * <SegmentURL> node to translate into a segment object
963
- * @return {Object} translated segment object
964
- */
965
- var SegmentURLToSegmentObject = (attributes, segmentUrl) => {
966
- const { baseUrl, initialization = {} } = attributes;
967
- const initSegment = urlTypeToSegment({
968
- baseUrl,
969
- source: initialization.sourceURL,
970
- range: initialization.range
971
- });
972
- const segment = urlTypeToSegment({
973
- baseUrl,
974
- source: segmentUrl.media,
975
- range: segmentUrl.mediaRange
976
- });
977
- segment.map = initSegment;
978
- return segment;
949
+ const segmentsFromList = (attributes, segmentTimeline) => {
950
+ const {
951
+ duration,
952
+ segmentUrls = [],
953
+ periodStart
954
+ } = attributes;
955
+ if (!duration && !segmentTimeline || duration && segmentTimeline) {
956
+ throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);
957
+ }
958
+ const segmentUrlMap = segmentUrls.map((segmentUrlObject) => SegmentURLToSegmentObject(attributes, segmentUrlObject));
959
+ let segmentTimeInfo;
960
+ if (duration) {
961
+ segmentTimeInfo = parseByDuration(attributes);
962
+ }
963
+ if (segmentTimeline) {
964
+ segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);
965
+ }
966
+ const segments = segmentTimeInfo.map((segmentTime, index) => {
967
+ if (segmentUrlMap[index]) {
968
+ const segment = segmentUrlMap[index];
969
+ const timescale = attributes.timescale || 1;
970
+ const presentationTimeOffset = attributes.presentationTimeOffset || 0;
971
+ segment.timeline = segmentTime.timeline;
972
+ segment.duration = segmentTime.duration;
973
+ segment.number = segmentTime.number;
974
+ segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;
975
+ return segment;
976
+ }
977
+ }).filter((segment) => segment);
978
+ return segments;
979
979
  };
980
- /**
981
- * Generates a list of segments using information provided by the SegmentList element
982
- * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of <SegmentURL> nodes. Each
983
- * node should be translated into segment.
984
- *
985
- * @param {Object} attributes
986
- * Object containing all inherited attributes from parent elements with attribute
987
- * names as keys
988
- * @param {Object[]|undefined} segmentTimeline
989
- * List of objects representing the attributes of each S element contained within
990
- * the SegmentTimeline element
991
- * @return {Object.<Array>} list of segments
992
- */
993
- var segmentsFromList = (attributes, segmentTimeline) => {
994
- const { duration, segmentUrls = [], periodStart } = attributes;
995
- if (!duration && !segmentTimeline || duration && segmentTimeline) throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);
996
- const segmentUrlMap = segmentUrls.map((segmentUrlObject) => SegmentURLToSegmentObject(attributes, segmentUrlObject));
997
- let segmentTimeInfo;
998
- if (duration) segmentTimeInfo = parseByDuration(attributes);
999
- if (segmentTimeline) segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);
1000
- return segmentTimeInfo.map((segmentTime, index) => {
1001
- if (segmentUrlMap[index]) {
1002
- const segment = segmentUrlMap[index];
1003
- const timescale = attributes.timescale || 1;
1004
- const presentationTimeOffset = attributes.presentationTimeOffset || 0;
1005
- segment.timeline = segmentTime.timeline;
1006
- segment.duration = segmentTime.duration;
1007
- segment.number = segmentTime.number;
1008
- segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;
1009
- return segment;
1010
- }
1011
- }).filter((segment) => segment);
980
+ const generateSegments = ({
981
+ attributes,
982
+ segmentInfo
983
+ }) => {
984
+ let segmentAttributes;
985
+ let segmentsFn;
986
+ if (segmentInfo.template) {
987
+ segmentsFn = segmentsFromTemplate;
988
+ segmentAttributes = merge(attributes, segmentInfo.template);
989
+ } else if (segmentInfo.base) {
990
+ segmentsFn = segmentsFromBase;
991
+ segmentAttributes = merge(attributes, segmentInfo.base);
992
+ } else if (segmentInfo.list) {
993
+ segmentsFn = segmentsFromList;
994
+ segmentAttributes = merge(attributes, segmentInfo.list);
995
+ }
996
+ const segmentsInfo = {
997
+ attributes
998
+ };
999
+ if (!segmentsFn) {
1000
+ return segmentsInfo;
1001
+ }
1002
+ const segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline);
1003
+ if (segmentAttributes.duration) {
1004
+ const {
1005
+ duration,
1006
+ timescale = 1
1007
+ } = segmentAttributes;
1008
+ segmentAttributes.duration = duration / timescale;
1009
+ } else if (segments.length) {
1010
+ segmentAttributes.duration = segments.reduce((max, segment) => {
1011
+ return Math.max(max, Math.ceil(segment.duration));
1012
+ }, 0);
1013
+ } else {
1014
+ segmentAttributes.duration = 0;
1015
+ }
1016
+ segmentsInfo.attributes = segmentAttributes;
1017
+ segmentsInfo.segments = segments;
1018
+ if (segmentInfo.base && segmentAttributes.indexRange) {
1019
+ segmentsInfo.sidx = segments[0];
1020
+ segmentsInfo.segments = [];
1021
+ }
1022
+ return segmentsInfo;
1012
1023
  };
1013
- var generateSegments = ({ attributes, segmentInfo }) => {
1014
- let segmentAttributes;
1015
- let segmentsFn;
1016
- if (segmentInfo.template) {
1017
- segmentsFn = segmentsFromTemplate;
1018
- segmentAttributes = merge(attributes, segmentInfo.template);
1019
- } else if (segmentInfo.base) {
1020
- segmentsFn = segmentsFromBase;
1021
- segmentAttributes = merge(attributes, segmentInfo.base);
1022
- } else if (segmentInfo.list) {
1023
- segmentsFn = segmentsFromList;
1024
- segmentAttributes = merge(attributes, segmentInfo.list);
1025
- }
1026
- const segmentsInfo = { attributes };
1027
- if (!segmentsFn) return segmentsInfo;
1028
- const segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline);
1029
- if (segmentAttributes.duration) {
1030
- const { duration, timescale = 1 } = segmentAttributes;
1031
- segmentAttributes.duration = duration / timescale;
1032
- } else if (segments.length) segmentAttributes.duration = segments.reduce((max, segment) => {
1033
- return Math.max(max, Math.ceil(segment.duration));
1034
- }, 0);
1035
- else segmentAttributes.duration = 0;
1036
- segmentsInfo.attributes = segmentAttributes;
1037
- segmentsInfo.segments = segments;
1038
- if (segmentInfo.base && segmentAttributes.indexRange) {
1039
- segmentsInfo.sidx = segments[0];
1040
- segmentsInfo.segments = [];
1041
- }
1042
- return segmentsInfo;
1024
+ const toPlaylists = (representations) => representations.map(generateSegments);
1025
+ const findChildren = (element, name) => from(element.childNodes).filter(({
1026
+ tagName
1027
+ }) => tagName === name);
1028
+ const getContent = (element) => element.textContent.trim();
1029
+ const parseDivisionValue = (value) => {
1030
+ return parseFloat(value.split("/").reduce((prev, current) => prev / current));
1043
1031
  };
1044
- var toPlaylists = (representations) => representations.map(generateSegments);
1045
- var findChildren = (element, name) => from(element.childNodes).filter(({ tagName }) => tagName === name);
1046
- var getContent = (element) => element.textContent.trim();
1047
- /**
1048
- * Converts the provided string that may contain a division operation to a number.
1049
- *
1050
- * @param {string} value - the provided string value
1051
- *
1052
- * @return {number} the parsed string value
1053
- */
1054
- var parseDivisionValue = (value) => {
1055
- return parseFloat(value.split("/").reduce((prev, current) => prev / current));
1032
+ const parseDuration = (str) => {
1033
+ const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;
1034
+ const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;
1035
+ const SECONDS_IN_DAY = 24 * 60 * 60;
1036
+ const SECONDS_IN_HOUR = 60 * 60;
1037
+ const SECONDS_IN_MIN = 60;
1038
+ const durationRegex = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/;
1039
+ const match = durationRegex.exec(str);
1040
+ if (!match) {
1041
+ return 0;
1042
+ }
1043
+ const [year, month, day, hour, minute, second] = match.slice(1);
1044
+ return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);
1056
1045
  };
1057
- var parseDuration = (str) => {
1058
- const SECONDS_IN_YEAR = 31536e3;
1059
- const SECONDS_IN_MONTH = 2592e3;
1060
- const SECONDS_IN_DAY = 86400;
1061
- const SECONDS_IN_HOUR = 3600;
1062
- const SECONDS_IN_MIN = 60;
1063
- const match = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(str);
1064
- if (!match) return 0;
1065
- const [year, month, day, hour, minute, second] = match.slice(1);
1066
- return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);
1046
+ const parseDate = (str) => {
1047
+ const dateRegex = /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/;
1048
+ if (dateRegex.test(str)) {
1049
+ str += "Z";
1050
+ }
1051
+ return Date.parse(str);
1067
1052
  };
1068
- var parseDate = (str) => {
1069
- if (/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(str)) str += "Z";
1070
- return Date.parse(str);
1053
+ const parsers = {
1054
+ /**
1055
+ * Specifies the duration of the entire Media Presentation. Format is a duration string
1056
+ * as specified in ISO 8601
1057
+ *
1058
+ * @param {string} value
1059
+ * value of attribute as a string
1060
+ * @return {number}
1061
+ * The duration in seconds
1062
+ */
1063
+ mediaPresentationDuration(value) {
1064
+ return parseDuration(value);
1065
+ },
1066
+ /**
1067
+ * Specifies the Segment availability start time for all Segments referred to in this
1068
+ * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability
1069
+ * time. Format is a date string as specified in ISO 8601
1070
+ *
1071
+ * @param {string} value
1072
+ * value of attribute as a string
1073
+ * @return {number}
1074
+ * The date as seconds from unix epoch
1075
+ */
1076
+ availabilityStartTime(value) {
1077
+ return parseDate(value) / 1e3;
1078
+ },
1079
+ /**
1080
+ * Specifies the smallest period between potential changes to the MPD. Format is a
1081
+ * duration string as specified in ISO 8601
1082
+ *
1083
+ * @param {string} value
1084
+ * value of attribute as a string
1085
+ * @return {number}
1086
+ * The duration in seconds
1087
+ */
1088
+ minimumUpdatePeriod(value) {
1089
+ return parseDuration(value);
1090
+ },
1091
+ /**
1092
+ * Specifies the suggested presentation delay. Format is a
1093
+ * duration string as specified in ISO 8601
1094
+ *
1095
+ * @param {string} value
1096
+ * value of attribute as a string
1097
+ * @return {number}
1098
+ * The duration in seconds
1099
+ */
1100
+ suggestedPresentationDelay(value) {
1101
+ return parseDuration(value);
1102
+ },
1103
+ /**
1104
+ * specifices the type of mpd. Can be either "static" or "dynamic"
1105
+ *
1106
+ * @param {string} value
1107
+ * value of attribute as a string
1108
+ *
1109
+ * @return {string}
1110
+ * The type as a string
1111
+ */
1112
+ type(value) {
1113
+ return value;
1114
+ },
1115
+ /**
1116
+ * Specifies the duration of the smallest time shifting buffer for any Representation
1117
+ * in the MPD. Format is a duration string as specified in ISO 8601
1118
+ *
1119
+ * @param {string} value
1120
+ * value of attribute as a string
1121
+ * @return {number}
1122
+ * The duration in seconds
1123
+ */
1124
+ timeShiftBufferDepth(value) {
1125
+ return parseDuration(value);
1126
+ },
1127
+ /**
1128
+ * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.
1129
+ * Format is a duration string as specified in ISO 8601
1130
+ *
1131
+ * @param {string} value
1132
+ * value of attribute as a string
1133
+ * @return {number}
1134
+ * The duration in seconds
1135
+ */
1136
+ start(value) {
1137
+ return parseDuration(value);
1138
+ },
1139
+ /**
1140
+ * Specifies the width of the visual presentation
1141
+ *
1142
+ * @param {string} value
1143
+ * value of attribute as a string
1144
+ * @return {number}
1145
+ * The parsed width
1146
+ */
1147
+ width(value) {
1148
+ return parseInt(value, 10);
1149
+ },
1150
+ /**
1151
+ * Specifies the height of the visual presentation
1152
+ *
1153
+ * @param {string} value
1154
+ * value of attribute as a string
1155
+ * @return {number}
1156
+ * The parsed height
1157
+ */
1158
+ height(value) {
1159
+ return parseInt(value, 10);
1160
+ },
1161
+ /**
1162
+ * Specifies the bitrate of the representation
1163
+ *
1164
+ * @param {string} value
1165
+ * value of attribute as a string
1166
+ * @return {number}
1167
+ * The parsed bandwidth
1168
+ */
1169
+ bandwidth(value) {
1170
+ return parseInt(value, 10);
1171
+ },
1172
+ /**
1173
+ * Specifies the frame rate of the representation
1174
+ *
1175
+ * @param {string} value
1176
+ * value of attribute as a string
1177
+ * @return {number}
1178
+ * The parsed frame rate
1179
+ */
1180
+ frameRate(value) {
1181
+ return parseDivisionValue(value);
1182
+ },
1183
+ /**
1184
+ * Specifies the number of the first Media Segment in this Representation in the Period
1185
+ *
1186
+ * @param {string} value
1187
+ * value of attribute as a string
1188
+ * @return {number}
1189
+ * The parsed number
1190
+ */
1191
+ startNumber(value) {
1192
+ return parseInt(value, 10);
1193
+ },
1194
+ /**
1195
+ * Specifies the timescale in units per seconds
1196
+ *
1197
+ * @param {string} value
1198
+ * value of attribute as a string
1199
+ * @return {number}
1200
+ * The parsed timescale
1201
+ */
1202
+ timescale(value) {
1203
+ return parseInt(value, 10);
1204
+ },
1205
+ /**
1206
+ * Specifies the presentationTimeOffset.
1207
+ *
1208
+ * @param {string} value
1209
+ * value of the attribute as a string
1210
+ *
1211
+ * @return {number}
1212
+ * The parsed presentationTimeOffset
1213
+ */
1214
+ presentationTimeOffset(value) {
1215
+ return parseInt(value, 10);
1216
+ },
1217
+ /**
1218
+ * Specifies the constant approximate Segment duration
1219
+ * NOTE: The <Period> element also contains an @duration attribute. This duration
1220
+ * specifies the duration of the Period. This attribute is currently not
1221
+ * supported by the rest of the parser, however we still check for it to prevent
1222
+ * errors.
1223
+ *
1224
+ * @param {string} value
1225
+ * value of attribute as a string
1226
+ * @return {number}
1227
+ * The parsed duration
1228
+ */
1229
+ duration(value) {
1230
+ const parsedValue = parseInt(value, 10);
1231
+ if (isNaN(parsedValue)) {
1232
+ return parseDuration(value);
1233
+ }
1234
+ return parsedValue;
1235
+ },
1236
+ /**
1237
+ * Specifies the Segment duration, in units of the value of the @timescale.
1238
+ *
1239
+ * @param {string} value
1240
+ * value of attribute as a string
1241
+ * @return {number}
1242
+ * The parsed duration
1243
+ */
1244
+ d(value) {
1245
+ return parseInt(value, 10);
1246
+ },
1247
+ /**
1248
+ * Specifies the MPD start time, in @timescale units, the first Segment in the series
1249
+ * starts relative to the beginning of the Period
1250
+ *
1251
+ * @param {string} value
1252
+ * value of attribute as a string
1253
+ * @return {number}
1254
+ * The parsed time
1255
+ */
1256
+ t(value) {
1257
+ return parseInt(value, 10);
1258
+ },
1259
+ /**
1260
+ * Specifies the repeat count of the number of following contiguous Segments with the
1261
+ * same duration expressed by the value of @d
1262
+ *
1263
+ * @param {string} value
1264
+ * value of attribute as a string
1265
+ * @return {number}
1266
+ * The parsed number
1267
+ */
1268
+ r(value) {
1269
+ return parseInt(value, 10);
1270
+ },
1271
+ /**
1272
+ * Specifies the presentationTime.
1273
+ *
1274
+ * @param {string} value
1275
+ * value of the attribute as a string
1276
+ *
1277
+ * @return {number}
1278
+ * The parsed presentationTime
1279
+ */
1280
+ presentationTime(value) {
1281
+ return parseInt(value, 10);
1282
+ },
1283
+ /**
1284
+ * Default parser for all other attributes. Acts as a no-op and just returns the value
1285
+ * as a string
1286
+ *
1287
+ * @param {string} value
1288
+ * value of attribute as a string
1289
+ * @return {string}
1290
+ * Unparsed value
1291
+ */
1292
+ DEFAULT(value) {
1293
+ return value;
1294
+ }
1071
1295
  };
1072
- var parsers = {
1073
- /**
1074
- * Specifies the duration of the entire Media Presentation. Format is a duration string
1075
- * as specified in ISO 8601
1076
- *
1077
- * @param {string} value
1078
- * value of attribute as a string
1079
- * @return {number}
1080
- * The duration in seconds
1081
- */
1082
- mediaPresentationDuration(value) {
1083
- return parseDuration(value);
1084
- },
1085
- /**
1086
- * Specifies the Segment availability start time for all Segments referred to in this
1087
- * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability
1088
- * time. Format is a date string as specified in ISO 8601
1089
- *
1090
- * @param {string} value
1091
- * value of attribute as a string
1092
- * @return {number}
1093
- * The date as seconds from unix epoch
1094
- */
1095
- availabilityStartTime(value) {
1096
- return parseDate(value) / 1e3;
1097
- },
1098
- /**
1099
- * Specifies the smallest period between potential changes to the MPD. Format is a
1100
- * duration string as specified in ISO 8601
1101
- *
1102
- * @param {string} value
1103
- * value of attribute as a string
1104
- * @return {number}
1105
- * The duration in seconds
1106
- */
1107
- minimumUpdatePeriod(value) {
1108
- return parseDuration(value);
1109
- },
1110
- /**
1111
- * Specifies the suggested presentation delay. Format is a
1112
- * duration string as specified in ISO 8601
1113
- *
1114
- * @param {string} value
1115
- * value of attribute as a string
1116
- * @return {number}
1117
- * The duration in seconds
1118
- */
1119
- suggestedPresentationDelay(value) {
1120
- return parseDuration(value);
1121
- },
1122
- /**
1123
- * specifices the type of mpd. Can be either "static" or "dynamic"
1124
- *
1125
- * @param {string} value
1126
- * value of attribute as a string
1127
- *
1128
- * @return {string}
1129
- * The type as a string
1130
- */
1131
- type(value) {
1132
- return value;
1133
- },
1134
- /**
1135
- * Specifies the duration of the smallest time shifting buffer for any Representation
1136
- * in the MPD. Format is a duration string as specified in ISO 8601
1137
- *
1138
- * @param {string} value
1139
- * value of attribute as a string
1140
- * @return {number}
1141
- * The duration in seconds
1142
- */
1143
- timeShiftBufferDepth(value) {
1144
- return parseDuration(value);
1145
- },
1146
- /**
1147
- * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.
1148
- * Format is a duration string as specified in ISO 8601
1149
- *
1150
- * @param {string} value
1151
- * value of attribute as a string
1152
- * @return {number}
1153
- * The duration in seconds
1154
- */
1155
- start(value) {
1156
- return parseDuration(value);
1157
- },
1158
- /**
1159
- * Specifies the width of the visual presentation
1160
- *
1161
- * @param {string} value
1162
- * value of attribute as a string
1163
- * @return {number}
1164
- * The parsed width
1165
- */
1166
- width(value) {
1167
- return parseInt(value, 10);
1168
- },
1169
- /**
1170
- * Specifies the height of the visual presentation
1171
- *
1172
- * @param {string} value
1173
- * value of attribute as a string
1174
- * @return {number}
1175
- * The parsed height
1176
- */
1177
- height(value) {
1178
- return parseInt(value, 10);
1179
- },
1180
- /**
1181
- * Specifies the bitrate of the representation
1182
- *
1183
- * @param {string} value
1184
- * value of attribute as a string
1185
- * @return {number}
1186
- * The parsed bandwidth
1187
- */
1188
- bandwidth(value) {
1189
- return parseInt(value, 10);
1190
- },
1191
- /**
1192
- * Specifies the frame rate of the representation
1193
- *
1194
- * @param {string} value
1195
- * value of attribute as a string
1196
- * @return {number}
1197
- * The parsed frame rate
1198
- */
1199
- frameRate(value) {
1200
- return parseDivisionValue(value);
1201
- },
1202
- /**
1203
- * Specifies the number of the first Media Segment in this Representation in the Period
1204
- *
1205
- * @param {string} value
1206
- * value of attribute as a string
1207
- * @return {number}
1208
- * The parsed number
1209
- */
1210
- startNumber(value) {
1211
- return parseInt(value, 10);
1212
- },
1213
- /**
1214
- * Specifies the timescale in units per seconds
1215
- *
1216
- * @param {string} value
1217
- * value of attribute as a string
1218
- * @return {number}
1219
- * The parsed timescale
1220
- */
1221
- timescale(value) {
1222
- return parseInt(value, 10);
1223
- },
1224
- /**
1225
- * Specifies the presentationTimeOffset.
1226
- *
1227
- * @param {string} value
1228
- * value of the attribute as a string
1229
- *
1230
- * @return {number}
1231
- * The parsed presentationTimeOffset
1232
- */
1233
- presentationTimeOffset(value) {
1234
- return parseInt(value, 10);
1235
- },
1236
- /**
1237
- * Specifies the constant approximate Segment duration
1238
- * NOTE: The <Period> element also contains an @duration attribute. This duration
1239
- * specifies the duration of the Period. This attribute is currently not
1240
- * supported by the rest of the parser, however we still check for it to prevent
1241
- * errors.
1242
- *
1243
- * @param {string} value
1244
- * value of attribute as a string
1245
- * @return {number}
1246
- * The parsed duration
1247
- */
1248
- duration(value) {
1249
- const parsedValue = parseInt(value, 10);
1250
- if (isNaN(parsedValue)) return parseDuration(value);
1251
- return parsedValue;
1252
- },
1253
- /**
1254
- * Specifies the Segment duration, in units of the value of the @timescale.
1255
- *
1256
- * @param {string} value
1257
- * value of attribute as a string
1258
- * @return {number}
1259
- * The parsed duration
1260
- */
1261
- d(value) {
1262
- return parseInt(value, 10);
1263
- },
1264
- /**
1265
- * Specifies the MPD start time, in @timescale units, the first Segment in the series
1266
- * starts relative to the beginning of the Period
1267
- *
1268
- * @param {string} value
1269
- * value of attribute as a string
1270
- * @return {number}
1271
- * The parsed time
1272
- */
1273
- t(value) {
1274
- return parseInt(value, 10);
1275
- },
1276
- /**
1277
- * Specifies the repeat count of the number of following contiguous Segments with the
1278
- * same duration expressed by the value of @d
1279
- *
1280
- * @param {string} value
1281
- * value of attribute as a string
1282
- * @return {number}
1283
- * The parsed number
1284
- */
1285
- r(value) {
1286
- return parseInt(value, 10);
1287
- },
1288
- /**
1289
- * Specifies the presentationTime.
1290
- *
1291
- * @param {string} value
1292
- * value of the attribute as a string
1293
- *
1294
- * @return {number}
1295
- * The parsed presentationTime
1296
- */
1297
- presentationTime(value) {
1298
- return parseInt(value, 10);
1299
- },
1300
- /**
1301
- * Default parser for all other attributes. Acts as a no-op and just returns the value
1302
- * as a string
1303
- *
1304
- * @param {string} value
1305
- * value of attribute as a string
1306
- * @return {string}
1307
- * Unparsed value
1308
- */
1309
- DEFAULT(value) {
1310
- return value;
1311
- }
1296
+ const parseAttributes = (el) => {
1297
+ if (!(el && el.attributes)) {
1298
+ return {};
1299
+ }
1300
+ return from(el.attributes).reduce((a, e) => {
1301
+ const parseFn = parsers[e.name] || parsers.DEFAULT;
1302
+ a[e.name] = parseFn(e.value);
1303
+ return a;
1304
+ }, {});
1312
1305
  };
1313
- /**
1314
- * Gets all the attributes and values of the provided node, parses attributes with known
1315
- * types, and returns an object with attribute names mapped to values.
1316
- *
1317
- * @param {Node} el
1318
- * The node to parse attributes from
1319
- * @return {Object}
1320
- * Object with all attributes of el parsed
1321
- */
1322
- var parseAttributes = (el) => {
1323
- if (!(el && el.attributes)) return {};
1324
- return from(el.attributes).reduce((a, e) => {
1325
- const parseFn = parsers[e.name] || parsers.DEFAULT;
1326
- a[e.name] = parseFn(e.value);
1327
- return a;
1328
- }, {});
1306
+ const keySystemsMap = {
1307
+ "urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey",
1308
+ "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha",
1309
+ "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready",
1310
+ "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime",
1311
+ // ISO_IEC 23009-1_2022 5.8.5.2.2 The mp4 Protection Scheme
1312
+ "urn:mpeg:dash:mp4protection:2011": "mp4protection"
1329
1313
  };
1330
- var keySystemsMap = {
1331
- "urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey",
1332
- "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha",
1333
- "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready",
1334
- "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime",
1335
- "urn:mpeg:dash:mp4protection:2011": "mp4protection"
1314
+ const buildBaseUrls = (references, baseUrlElements) => {
1315
+ if (!baseUrlElements.length) {
1316
+ return references;
1317
+ }
1318
+ return flatten(references.map(function(reference) {
1319
+ return baseUrlElements.map(function(baseUrlElement) {
1320
+ const initialBaseUrl = getContent(baseUrlElement);
1321
+ const resolvedBaseUrl = resolveUrl(reference.baseUrl, initialBaseUrl);
1322
+ const finalBaseUrl = merge(parseAttributes(baseUrlElement), {
1323
+ baseUrl: resolvedBaseUrl
1324
+ });
1325
+ if (resolvedBaseUrl !== initialBaseUrl && !finalBaseUrl.serviceLocation && reference.serviceLocation) {
1326
+ finalBaseUrl.serviceLocation = reference.serviceLocation;
1327
+ }
1328
+ return finalBaseUrl;
1329
+ });
1330
+ }));
1336
1331
  };
1337
- /**
1338
- * Builds a list of urls that is the product of the reference urls and BaseURL values
1339
- *
1340
- * @param {Object[]} references
1341
- * List of objects containing the reference URL as well as its attributes
1342
- * @param {Node[]} baseUrlElements
1343
- * List of BaseURL nodes from the mpd
1344
- * @return {Object[]}
1345
- * List of objects with resolved urls and attributes
1346
- */
1347
- var buildBaseUrls = (references, baseUrlElements) => {
1348
- if (!baseUrlElements.length) return references;
1349
- return flatten(references.map(function(reference) {
1350
- return baseUrlElements.map(function(baseUrlElement) {
1351
- const initialBaseUrl = getContent(baseUrlElement);
1352
- const resolvedBaseUrl = resolveUrl(reference.baseUrl, initialBaseUrl);
1353
- const finalBaseUrl = merge(parseAttributes(baseUrlElement), { baseUrl: resolvedBaseUrl });
1354
- if (resolvedBaseUrl !== initialBaseUrl && !finalBaseUrl.serviceLocation && reference.serviceLocation) finalBaseUrl.serviceLocation = reference.serviceLocation;
1355
- return finalBaseUrl;
1356
- });
1357
- }));
1332
+ const getSegmentInformation = (adaptationSet) => {
1333
+ const segmentTemplate = findChildren(adaptationSet, "SegmentTemplate")[0];
1334
+ const segmentList = findChildren(adaptationSet, "SegmentList")[0];
1335
+ const segmentUrls = segmentList && findChildren(segmentList, "SegmentURL").map((s) => merge({
1336
+ tag: "SegmentURL"
1337
+ }, parseAttributes(s)));
1338
+ const segmentBase = findChildren(adaptationSet, "SegmentBase")[0];
1339
+ const segmentTimelineParentNode = segmentList || segmentTemplate;
1340
+ const segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, "SegmentTimeline")[0];
1341
+ const segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;
1342
+ const segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, "Initialization")[0];
1343
+ const template = segmentTemplate && parseAttributes(segmentTemplate);
1344
+ if (template && segmentInitialization) {
1345
+ template.initialization = segmentInitialization && parseAttributes(segmentInitialization);
1346
+ } else if (template && template.initialization) {
1347
+ template.initialization = {
1348
+ sourceURL: template.initialization
1349
+ };
1350
+ }
1351
+ const segmentInfo = {
1352
+ template,
1353
+ segmentTimeline: segmentTimeline && findChildren(segmentTimeline, "S").map((s) => parseAttributes(s)),
1354
+ list: segmentList && merge(parseAttributes(segmentList), {
1355
+ segmentUrls,
1356
+ initialization: parseAttributes(segmentInitialization)
1357
+ }),
1358
+ base: segmentBase && merge(parseAttributes(segmentBase), {
1359
+ initialization: parseAttributes(segmentInitialization)
1360
+ })
1361
+ };
1362
+ Object.keys(segmentInfo).forEach((key) => {
1363
+ if (!segmentInfo[key]) {
1364
+ delete segmentInfo[key];
1365
+ }
1366
+ });
1367
+ return segmentInfo;
1358
1368
  };
1359
- /**
1360
- * Contains all Segment information for its containing AdaptationSet
1361
- *
1362
- * @typedef {Object} SegmentInformation
1363
- * @property {Object|undefined} template
1364
- * Contains the attributes for the SegmentTemplate node
1365
- * @property {Object[]|undefined} segmentTimeline
1366
- * Contains a list of atrributes for each S node within the SegmentTimeline node
1367
- * @property {Object|undefined} list
1368
- * Contains the attributes for the SegmentList node
1369
- * @property {Object|undefined} base
1370
- * Contains the attributes for the SegmentBase node
1371
- */
1372
- /**
1373
- * Returns all available Segment information contained within the AdaptationSet node
1374
- *
1375
- * @param {Node} adaptationSet
1376
- * The AdaptationSet node to get Segment information from
1377
- * @return {SegmentInformation}
1378
- * The Segment information contained within the provided AdaptationSet
1379
- */
1380
- var getSegmentInformation = (adaptationSet) => {
1381
- const segmentTemplate = findChildren(adaptationSet, "SegmentTemplate")[0];
1382
- const segmentList = findChildren(adaptationSet, "SegmentList")[0];
1383
- const segmentUrls = segmentList && findChildren(segmentList, "SegmentURL").map((s) => merge({ tag: "SegmentURL" }, parseAttributes(s)));
1384
- const segmentBase = findChildren(adaptationSet, "SegmentBase")[0];
1385
- const segmentTimelineParentNode = segmentList || segmentTemplate;
1386
- const segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, "SegmentTimeline")[0];
1387
- const segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;
1388
- const segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, "Initialization")[0];
1389
- const template = segmentTemplate && parseAttributes(segmentTemplate);
1390
- if (template && segmentInitialization) template.initialization = segmentInitialization && parseAttributes(segmentInitialization);
1391
- else if (template && template.initialization) template.initialization = { sourceURL: template.initialization };
1392
- const segmentInfo = {
1393
- template,
1394
- segmentTimeline: segmentTimeline && findChildren(segmentTimeline, "S").map((s) => parseAttributes(s)),
1395
- list: segmentList && merge(parseAttributes(segmentList), {
1396
- segmentUrls,
1397
- initialization: parseAttributes(segmentInitialization)
1398
- }),
1399
- base: segmentBase && merge(parseAttributes(segmentBase), { initialization: parseAttributes(segmentInitialization) })
1400
- };
1401
- Object.keys(segmentInfo).forEach((key) => {
1402
- if (!segmentInfo[key]) delete segmentInfo[key];
1403
- });
1404
- return segmentInfo;
1369
+ const inheritBaseUrls = (adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) => (representation) => {
1370
+ const repBaseUrlElements = findChildren(representation, "BaseURL");
1371
+ const repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);
1372
+ const attributes = merge(adaptationSetAttributes, parseAttributes(representation));
1373
+ const representationSegmentInfo = getSegmentInformation(representation);
1374
+ return repBaseUrls.map((baseUrl) => {
1375
+ return {
1376
+ segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),
1377
+ attributes: merge(attributes, baseUrl)
1378
+ };
1379
+ });
1405
1380
  };
1406
- /**
1407
- * Contains Segment information and attributes needed to construct a Playlist object
1408
- * from a Representation
1409
- *
1410
- * @typedef {Object} RepresentationInformation
1411
- * @property {SegmentInformation} segmentInfo
1412
- * Segment information for this Representation
1413
- * @property {Object} attributes
1414
- * Inherited attributes for this Representation
1415
- */
1416
- /**
1417
- * Maps a Representation node to an object containing Segment information and attributes
1418
- *
1419
- * @name inheritBaseUrlsCallback
1420
- * @function
1421
- * @param {Node} representation
1422
- * Representation node from the mpd
1423
- * @return {RepresentationInformation}
1424
- * Representation information needed to construct a Playlist object
1425
- */
1426
- /**
1427
- * Returns a callback for Array.prototype.map for mapping Representation nodes to
1428
- * Segment information and attributes using inherited BaseURL nodes.
1429
- *
1430
- * @param {Object} adaptationSetAttributes
1431
- * Contains attributes inherited by the AdaptationSet
1432
- * @param {Object[]} adaptationSetBaseUrls
1433
- * List of objects containing resolved base URLs and attributes
1434
- * inherited by the AdaptationSet
1435
- * @param {SegmentInformation} adaptationSetSegmentInfo
1436
- * Contains Segment information for the AdaptationSet
1437
- * @return {inheritBaseUrlsCallback}
1438
- * Callback map function
1439
- */
1440
- var inheritBaseUrls = (adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) => (representation) => {
1441
- const repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, findChildren(representation, "BaseURL"));
1442
- const attributes = merge(adaptationSetAttributes, parseAttributes(representation));
1443
- const representationSegmentInfo = getSegmentInformation(representation);
1444
- return repBaseUrls.map((baseUrl) => {
1445
- return {
1446
- segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),
1447
- attributes: merge(attributes, baseUrl)
1448
- };
1449
- });
1381
+ const generateKeySystemInformation = (contentProtectionNodes) => {
1382
+ return contentProtectionNodes.reduce((acc, node) => {
1383
+ const attributes = parseAttributes(node);
1384
+ if (attributes.schemeIdUri) {
1385
+ attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();
1386
+ }
1387
+ const keySystem = keySystemsMap[attributes.schemeIdUri];
1388
+ if (keySystem) {
1389
+ acc[keySystem] = {
1390
+ attributes
1391
+ };
1392
+ const psshNode = findChildren(node, "cenc:pssh")[0];
1393
+ if (psshNode) {
1394
+ const pssh = getContent(psshNode);
1395
+ acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);
1396
+ }
1397
+ }
1398
+ return acc;
1399
+ }, {});
1450
1400
  };
1451
- /**
1452
- * Tranforms a series of content protection nodes to
1453
- * an object containing pssh data by key system
1454
- *
1455
- * @param {Node[]} contentProtectionNodes
1456
- * Content protection nodes
1457
- * @return {Object}
1458
- * Object containing pssh data by key system
1459
- */
1460
- var generateKeySystemInformation = (contentProtectionNodes) => {
1461
- return contentProtectionNodes.reduce((acc, node) => {
1462
- const attributes = parseAttributes(node);
1463
- if (attributes.schemeIdUri) attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();
1464
- const keySystem = keySystemsMap[attributes.schemeIdUri];
1465
- if (keySystem) {
1466
- acc[keySystem] = { attributes };
1467
- const psshNode = findChildren(node, "cenc:pssh")[0];
1468
- if (psshNode) {
1469
- const pssh = getContent(psshNode);
1470
- acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);
1471
- }
1472
- }
1473
- return acc;
1474
- }, {});
1401
+ const parseCaptionServiceMetadata = (service) => {
1402
+ if (service.schemeIdUri === "urn:scte:dash:cc:cea-608:2015") {
1403
+ const values2 = typeof service.value !== "string" ? [] : service.value.split(";");
1404
+ return values2.map((value) => {
1405
+ let channel;
1406
+ let language;
1407
+ language = value;
1408
+ if (/^CC\d=/.test(value)) {
1409
+ [channel, language] = value.split("=");
1410
+ } else if (/^CC\d$/.test(value)) {
1411
+ channel = value;
1412
+ }
1413
+ return {
1414
+ channel,
1415
+ language
1416
+ };
1417
+ });
1418
+ } else if (service.schemeIdUri === "urn:scte:dash:cc:cea-708:2015") {
1419
+ const values2 = typeof service.value !== "string" ? [] : service.value.split(";");
1420
+ return values2.map((value) => {
1421
+ const flags = {
1422
+ // service or channel number 1-63
1423
+ "channel": void 0,
1424
+ // language is a 3ALPHA per ISO 639.2/B
1425
+ // field is required
1426
+ "language": void 0,
1427
+ // BIT 1/0 or ?
1428
+ // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown
1429
+ "aspectRatio": 1,
1430
+ // BIT 1/0
1431
+ // easy reader flag indicated the text is tailed to the needs of beginning readers
1432
+ // default 0, or off
1433
+ "easyReader": 0,
1434
+ // BIT 1/0
1435
+ // If 3d metadata is present (CEA-708.1) then 1
1436
+ // default 0
1437
+ "3D": 0
1438
+ };
1439
+ if (/=/.test(value)) {
1440
+ const [channel, opts = ""] = value.split("=");
1441
+ flags.channel = channel;
1442
+ flags.language = value;
1443
+ opts.split(",").forEach((opt) => {
1444
+ const [name, val] = opt.split(":");
1445
+ if (name === "lang") {
1446
+ flags.language = val;
1447
+ } else if (name === "er") {
1448
+ flags.easyReader = Number(val);
1449
+ } else if (name === "war") {
1450
+ flags.aspectRatio = Number(val);
1451
+ } else if (name === "3D") {
1452
+ flags["3D"] = Number(val);
1453
+ }
1454
+ });
1455
+ } else {
1456
+ flags.language = value;
1457
+ }
1458
+ if (flags.channel) {
1459
+ flags.channel = "SERVICE" + flags.channel;
1460
+ }
1461
+ return flags;
1462
+ });
1463
+ }
1475
1464
  };
1476
- var parseCaptionServiceMetadata = (service) => {
1477
- if (service.schemeIdUri === "urn:scte:dash:cc:cea-608:2015") return (typeof service.value !== "string" ? [] : service.value.split(";")).map((value) => {
1478
- let channel;
1479
- let language;
1480
- language = value;
1481
- if (/^CC\d=/.test(value)) [channel, language] = value.split("=");
1482
- else if (/^CC\d$/.test(value)) channel = value;
1483
- return {
1484
- channel,
1485
- language
1486
- };
1487
- });
1488
- else if (service.schemeIdUri === "urn:scte:dash:cc:cea-708:2015") return (typeof service.value !== "string" ? [] : service.value.split(";")).map((value) => {
1489
- const flags = {
1490
- "channel": void 0,
1491
- "language": void 0,
1492
- "aspectRatio": 1,
1493
- "easyReader": 0,
1494
- "3D": 0
1495
- };
1496
- if (/=/.test(value)) {
1497
- const [channel, opts = ""] = value.split("=");
1498
- flags.channel = channel;
1499
- flags.language = value;
1500
- opts.split(",").forEach((opt) => {
1501
- const [name, val] = opt.split(":");
1502
- if (name === "lang") flags.language = val;
1503
- else if (name === "er") flags.easyReader = Number(val);
1504
- else if (name === "war") flags.aspectRatio = Number(val);
1505
- else if (name === "3D") flags["3D"] = Number(val);
1506
- });
1507
- } else flags.language = value;
1508
- if (flags.channel) flags.channel = "SERVICE" + flags.channel;
1509
- return flags;
1510
- });
1465
+ const toEventStream = (period) => {
1466
+ return flatten(findChildren(period.node, "EventStream").map((eventStream) => {
1467
+ const eventStreamAttributes = parseAttributes(eventStream);
1468
+ const schemeIdUri = eventStreamAttributes.schemeIdUri;
1469
+ return findChildren(eventStream, "Event").map((event) => {
1470
+ const eventAttributes = parseAttributes(event);
1471
+ const presentationTime = eventAttributes.presentationTime || 0;
1472
+ const timescale = eventStreamAttributes.timescale || 1;
1473
+ const duration = eventAttributes.duration || 0;
1474
+ const start = presentationTime / timescale + period.attributes.start;
1475
+ return {
1476
+ schemeIdUri,
1477
+ value: eventStreamAttributes.value,
1478
+ id: eventAttributes.id,
1479
+ start,
1480
+ end: start + duration / timescale,
1481
+ messageData: getContent(event) || eventAttributes.messageData,
1482
+ contentEncoding: eventStreamAttributes.contentEncoding,
1483
+ presentationTimeOffset: eventStreamAttributes.presentationTimeOffset || 0
1484
+ };
1485
+ });
1486
+ }));
1511
1487
  };
1512
- /**
1513
- * A map callback that will parse all event stream data for a collection of periods
1514
- * DASH ISO_IEC_23009 5.10.2.2
1515
- * https://dashif-documents.azurewebsites.net/Events/master/event.html#mpd-event-timing
1516
- *
1517
- * @param {PeriodInformation} period object containing necessary period information
1518
- * @return a collection of parsed eventstream event objects
1519
- */
1520
- var toEventStream = (period) => {
1521
- return flatten(findChildren(period.node, "EventStream").map((eventStream) => {
1522
- const eventStreamAttributes = parseAttributes(eventStream);
1523
- const schemeIdUri = eventStreamAttributes.schemeIdUri;
1524
- return findChildren(eventStream, "Event").map((event) => {
1525
- const eventAttributes = parseAttributes(event);
1526
- const presentationTime = eventAttributes.presentationTime || 0;
1527
- const timescale = eventStreamAttributes.timescale || 1;
1528
- const duration = eventAttributes.duration || 0;
1529
- const start = presentationTime / timescale + period.attributes.start;
1530
- return {
1531
- schemeIdUri,
1532
- value: eventStreamAttributes.value,
1533
- id: eventAttributes.id,
1534
- start,
1535
- end: start + duration / timescale,
1536
- messageData: getContent(event) || eventAttributes.messageData,
1537
- contentEncoding: eventStreamAttributes.contentEncoding,
1538
- presentationTimeOffset: eventStreamAttributes.presentationTimeOffset || 0
1539
- };
1540
- });
1541
- }));
1488
+ const toRepresentations = (periodAttributes, periodBaseUrls, periodSegmentInfo) => (adaptationSet) => {
1489
+ const adaptationSetAttributes = parseAttributes(adaptationSet);
1490
+ const adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, "BaseURL"));
1491
+ const role = findChildren(adaptationSet, "Role")[0];
1492
+ const roleAttributes = {
1493
+ role: parseAttributes(role)
1494
+ };
1495
+ let attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);
1496
+ const accessibility = findChildren(adaptationSet, "Accessibility")[0];
1497
+ const captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));
1498
+ if (captionServices) {
1499
+ attrs = merge(attrs, {
1500
+ captionServices
1501
+ });
1502
+ }
1503
+ const label = findChildren(adaptationSet, "Label")[0];
1504
+ if (label && label.childNodes.length) {
1505
+ const labelVal = label.childNodes[0].nodeValue.trim();
1506
+ attrs = merge(attrs, {
1507
+ label: labelVal
1508
+ });
1509
+ }
1510
+ const contentProtection = generateKeySystemInformation(findChildren(adaptationSet, "ContentProtection"));
1511
+ if (Object.keys(contentProtection).length) {
1512
+ attrs = merge(attrs, {
1513
+ contentProtection
1514
+ });
1515
+ }
1516
+ const segmentInfo = getSegmentInformation(adaptationSet);
1517
+ const representations = findChildren(adaptationSet, "Representation");
1518
+ const adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);
1519
+ return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));
1542
1520
  };
1543
- /**
1544
- * Maps an AdaptationSet node to a list of Representation information objects
1545
- *
1546
- * @name toRepresentationsCallback
1547
- * @function
1548
- * @param {Node} adaptationSet
1549
- * AdaptationSet node from the mpd
1550
- * @return {RepresentationInformation[]}
1551
- * List of objects containing Representaion information
1552
- */
1553
- /**
1554
- * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of
1555
- * Representation information objects
1556
- *
1557
- * @param {Object} periodAttributes
1558
- * Contains attributes inherited by the Period
1559
- * @param {Object[]} periodBaseUrls
1560
- * Contains list of objects with resolved base urls and attributes
1561
- * inherited by the Period
1562
- * @param {string[]} periodSegmentInfo
1563
- * Contains Segment Information at the period level
1564
- * @return {toRepresentationsCallback}
1565
- * Callback map function
1566
- */
1567
- var toRepresentations = (periodAttributes, periodBaseUrls, periodSegmentInfo) => (adaptationSet) => {
1568
- const adaptationSetAttributes = parseAttributes(adaptationSet);
1569
- const adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, "BaseURL"));
1570
- const role = findChildren(adaptationSet, "Role")[0];
1571
- let attrs = merge(periodAttributes, adaptationSetAttributes, { role: parseAttributes(role) });
1572
- const accessibility = findChildren(adaptationSet, "Accessibility")[0];
1573
- const captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));
1574
- if (captionServices) attrs = merge(attrs, { captionServices });
1575
- const label = findChildren(adaptationSet, "Label")[0];
1576
- if (label && label.childNodes.length) {
1577
- const labelVal = label.childNodes[0].nodeValue.trim();
1578
- attrs = merge(attrs, { label: labelVal });
1579
- }
1580
- const contentProtection = generateKeySystemInformation(findChildren(adaptationSet, "ContentProtection"));
1581
- if (Object.keys(contentProtection).length) attrs = merge(attrs, { contentProtection });
1582
- const segmentInfo = getSegmentInformation(adaptationSet);
1583
- const representations = findChildren(adaptationSet, "Representation");
1584
- const adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);
1585
- return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));
1521
+ const toAdaptationSets = (mpdAttributes, mpdBaseUrls) => (period, index) => {
1522
+ const periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, "BaseURL"));
1523
+ const periodAttributes = merge(mpdAttributes, {
1524
+ periodStart: period.attributes.start
1525
+ });
1526
+ if (typeof period.attributes.duration === "number") {
1527
+ periodAttributes.periodDuration = period.attributes.duration;
1528
+ }
1529
+ const adaptationSets = findChildren(period.node, "AdaptationSet");
1530
+ const periodSegmentInfo = getSegmentInformation(period.node);
1531
+ return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));
1586
1532
  };
1587
- /**
1588
- * Contains all period information for mapping nodes onto adaptation sets.
1589
- *
1590
- * @typedef {Object} PeriodInformation
1591
- * @property {Node} period.node
1592
- * Period node from the mpd
1593
- * @property {Object} period.attributes
1594
- * Parsed period attributes from node plus any added
1595
- */
1596
- /**
1597
- * Maps a PeriodInformation object to a list of Representation information objects for all
1598
- * AdaptationSet nodes contained within the Period.
1599
- *
1600
- * @name toAdaptationSetsCallback
1601
- * @function
1602
- * @param {PeriodInformation} period
1603
- * Period object containing necessary period information
1604
- * @param {number} periodStart
1605
- * Start time of the Period within the mpd
1606
- * @return {RepresentationInformation[]}
1607
- * List of objects containing Representaion information
1608
- */
1609
- /**
1610
- * Returns a callback for Array.prototype.map for mapping Period nodes to a list of
1611
- * Representation information objects
1612
- *
1613
- * @param {Object} mpdAttributes
1614
- * Contains attributes inherited by the mpd
1615
- * @param {Object[]} mpdBaseUrls
1616
- * Contains list of objects with resolved base urls and attributes
1617
- * inherited by the mpd
1618
- * @return {toAdaptationSetsCallback}
1619
- * Callback map function
1620
- */
1621
- var toAdaptationSets = (mpdAttributes, mpdBaseUrls) => (period, index) => {
1622
- const periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, "BaseURL"));
1623
- const periodAttributes = merge(mpdAttributes, { periodStart: period.attributes.start });
1624
- if (typeof period.attributes.duration === "number") periodAttributes.periodDuration = period.attributes.duration;
1625
- const adaptationSets = findChildren(period.node, "AdaptationSet");
1626
- const periodSegmentInfo = getSegmentInformation(period.node);
1627
- return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));
1533
+ const generateContentSteeringInformation = (contentSteeringNodes, eventHandler) => {
1534
+ if (contentSteeringNodes.length > 1) {
1535
+ eventHandler({
1536
+ type: "warn",
1537
+ message: "The MPD manifest should contain no more than one ContentSteering tag"
1538
+ });
1539
+ }
1540
+ if (!contentSteeringNodes.length) {
1541
+ return null;
1542
+ }
1543
+ const infoFromContentSteeringTag = merge({
1544
+ serverURL: getContent(contentSteeringNodes[0])
1545
+ }, parseAttributes(contentSteeringNodes[0]));
1546
+ infoFromContentSteeringTag.queryBeforeStart = infoFromContentSteeringTag.queryBeforeStart === "true";
1547
+ return infoFromContentSteeringTag;
1628
1548
  };
1629
- /**
1630
- * Tranforms an array of content steering nodes into an object
1631
- * containing CDN content steering information from the MPD manifest.
1632
- *
1633
- * For more information on the DASH spec for Content Steering parsing, see:
1634
- * https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf
1635
- *
1636
- * @param {Node[]} contentSteeringNodes
1637
- * Content steering nodes
1638
- * @param {Function} eventHandler
1639
- * The event handler passed into the parser options to handle warnings
1640
- * @return {Object}
1641
- * Object containing content steering data
1642
- */
1643
- var generateContentSteeringInformation = (contentSteeringNodes, eventHandler) => {
1644
- if (contentSteeringNodes.length > 1) eventHandler({
1645
- type: "warn",
1646
- message: "The MPD manifest should contain no more than one ContentSteering tag"
1647
- });
1648
- if (!contentSteeringNodes.length) return null;
1649
- const infoFromContentSteeringTag = merge({ serverURL: getContent(contentSteeringNodes[0]) }, parseAttributes(contentSteeringNodes[0]));
1650
- infoFromContentSteeringTag.queryBeforeStart = infoFromContentSteeringTag.queryBeforeStart === "true";
1651
- return infoFromContentSteeringTag;
1549
+ const getPeriodStart = ({
1550
+ attributes,
1551
+ priorPeriodAttributes,
1552
+ mpdType
1553
+ }) => {
1554
+ if (typeof attributes.start === "number") {
1555
+ return attributes.start;
1556
+ }
1557
+ if (priorPeriodAttributes && typeof priorPeriodAttributes.start === "number" && typeof priorPeriodAttributes.duration === "number") {
1558
+ return priorPeriodAttributes.start + priorPeriodAttributes.duration;
1559
+ }
1560
+ if (!priorPeriodAttributes && mpdType === "static") {
1561
+ return 0;
1562
+ }
1563
+ return null;
1652
1564
  };
1653
- /**
1654
- * Gets Period@start property for a given period.
1655
- *
1656
- * @param {Object} options
1657
- * Options object
1658
- * @param {Object} options.attributes
1659
- * Period attributes
1660
- * @param {Object} [options.priorPeriodAttributes]
1661
- * Prior period attributes (if prior period is available)
1662
- * @param {string} options.mpdType
1663
- * The MPD@type these periods came from
1664
- * @return {number|null}
1665
- * The period start, or null if it's an early available period or error
1666
- */
1667
- var getPeriodStart = ({ attributes, priorPeriodAttributes, mpdType }) => {
1668
- if (typeof attributes.start === "number") return attributes.start;
1669
- if (priorPeriodAttributes && typeof priorPeriodAttributes.start === "number" && typeof priorPeriodAttributes.duration === "number") return priorPeriodAttributes.start + priorPeriodAttributes.duration;
1670
- if (!priorPeriodAttributes && mpdType === "static") return 0;
1671
- return null;
1565
+ const inheritAttributes = (mpd, options = {}) => {
1566
+ const {
1567
+ manifestUri = "",
1568
+ NOW = Date.now(),
1569
+ clientOffset = 0,
1570
+ // TODO: For now, we are expecting an eventHandler callback function
1571
+ // to be passed into the mpd parser as an option.
1572
+ // In the future, we should enable stream parsing by using the Stream class from vhs-utils.
1573
+ // This will support new features including a standardized event handler.
1574
+ // See the m3u8 parser for examples of how stream parsing is currently used for HLS parsing.
1575
+ // https://github.com/videojs/vhs-utils/blob/88d6e10c631e57a5af02c5a62bc7376cd456b4f5/src/stream.js#L9
1576
+ eventHandler = function() {
1577
+ }
1578
+ } = options;
1579
+ const periodNodes = findChildren(mpd, "Period");
1580
+ if (!periodNodes.length) {
1581
+ throw new Error(errors.INVALID_NUMBER_OF_PERIOD);
1582
+ }
1583
+ const locations = findChildren(mpd, "Location");
1584
+ const mpdAttributes = parseAttributes(mpd);
1585
+ const mpdBaseUrls = buildBaseUrls([{
1586
+ baseUrl: manifestUri
1587
+ }], findChildren(mpd, "BaseURL"));
1588
+ const contentSteeringNodes = findChildren(mpd, "ContentSteering");
1589
+ mpdAttributes.type = mpdAttributes.type || "static";
1590
+ mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;
1591
+ mpdAttributes.NOW = NOW;
1592
+ mpdAttributes.clientOffset = clientOffset;
1593
+ if (locations.length) {
1594
+ mpdAttributes.locations = locations.map(getContent);
1595
+ }
1596
+ const periods = [];
1597
+ periodNodes.forEach((node, index) => {
1598
+ const attributes = parseAttributes(node);
1599
+ const priorPeriod = periods[index - 1];
1600
+ attributes.start = getPeriodStart({
1601
+ attributes,
1602
+ priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,
1603
+ mpdType: mpdAttributes.type
1604
+ });
1605
+ periods.push({
1606
+ node,
1607
+ attributes
1608
+ });
1609
+ });
1610
+ return {
1611
+ locations: mpdAttributes.locations,
1612
+ contentSteeringInfo: generateContentSteeringInformation(contentSteeringNodes, eventHandler),
1613
+ // TODO: There are occurences where this `representationInfo` array contains undesired
1614
+ // duplicates. This generally occurs when there are multiple BaseURL nodes that are
1615
+ // direct children of the MPD node. When we attempt to resolve URLs from a combination of the
1616
+ // parent BaseURL and a child BaseURL, and the value does not resolve,
1617
+ // we end up returning the child BaseURL multiple times.
1618
+ // We need to determine a way to remove these duplicates in a safe way.
1619
+ // See: https://github.com/videojs/mpd-parser/pull/17#discussion_r162750527
1620
+ representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))),
1621
+ eventStream: flatten(periods.map(toEventStream))
1622
+ };
1672
1623
  };
1673
- /**
1674
- * Traverses the mpd xml tree to generate a list of Representation information objects
1675
- * that have inherited attributes from parent nodes
1676
- *
1677
- * @param {Node} mpd
1678
- * The root node of the mpd
1679
- * @param {Object} options
1680
- * Available options for inheritAttributes
1681
- * @param {string} options.manifestUri
1682
- * The uri source of the mpd
1683
- * @param {number} options.NOW
1684
- * Current time per DASH IOP. Default is current time in ms since epoch
1685
- * @param {number} options.clientOffset
1686
- * Client time difference from NOW (in milliseconds)
1687
- * @return {RepresentationInformation[]}
1688
- * List of objects containing Representation information
1689
- */
1690
- var inheritAttributes = (mpd, options = {}) => {
1691
- const { manifestUri = "", NOW = Date.now(), clientOffset = 0, eventHandler = function() {} } = options;
1692
- const periodNodes = findChildren(mpd, "Period");
1693
- if (!periodNodes.length) throw new Error(errors.INVALID_NUMBER_OF_PERIOD);
1694
- const locations = findChildren(mpd, "Location");
1695
- const mpdAttributes = parseAttributes(mpd);
1696
- const mpdBaseUrls = buildBaseUrls([{ baseUrl: manifestUri }], findChildren(mpd, "BaseURL"));
1697
- const contentSteeringNodes = findChildren(mpd, "ContentSteering");
1698
- mpdAttributes.type = mpdAttributes.type || "static";
1699
- mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;
1700
- mpdAttributes.NOW = NOW;
1701
- mpdAttributes.clientOffset = clientOffset;
1702
- if (locations.length) mpdAttributes.locations = locations.map(getContent);
1703
- const periods = [];
1704
- periodNodes.forEach((node, index) => {
1705
- const attributes = parseAttributes(node);
1706
- const priorPeriod = periods[index - 1];
1707
- attributes.start = getPeriodStart({
1708
- attributes,
1709
- priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,
1710
- mpdType: mpdAttributes.type
1711
- });
1712
- periods.push({
1713
- node,
1714
- attributes
1715
- });
1716
- });
1717
- return {
1718
- locations: mpdAttributes.locations,
1719
- contentSteeringInfo: generateContentSteeringInformation(contentSteeringNodes, eventHandler),
1720
- representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))),
1721
- eventStream: flatten(periods.map(toEventStream))
1722
- };
1624
+ const stringToMpdXml = (manifestString) => {
1625
+ if (manifestString === "") {
1626
+ throw new Error(errors.DASH_EMPTY_MANIFEST);
1627
+ }
1628
+ const parser = new libExports.DOMParser();
1629
+ let xml;
1630
+ let mpd;
1631
+ try {
1632
+ xml = parser.parseFromString(manifestString, "application/xml");
1633
+ mpd = xml && xml.documentElement.tagName === "MPD" ? xml.documentElement : null;
1634
+ } catch (e) {
1635
+ }
1636
+ if (!mpd || mpd && mpd.getElementsByTagName("parsererror").length > 0) {
1637
+ throw new Error(errors.DASH_INVALID_XML);
1638
+ }
1639
+ return mpd;
1723
1640
  };
1724
- var stringToMpdXml = (manifestString) => {
1725
- if (manifestString === "") throw new Error(errors.DASH_EMPTY_MANIFEST);
1726
- const parser = new import_lib.DOMParser();
1727
- let xml;
1728
- let mpd;
1729
- try {
1730
- xml = parser.parseFromString(manifestString, "application/xml");
1731
- mpd = xml && xml.documentElement.tagName === "MPD" ? xml.documentElement : null;
1732
- } catch (e) {}
1733
- if (!mpd || mpd && mpd.getElementsByTagName("parsererror").length > 0) throw new Error(errors.DASH_INVALID_XML);
1734
- return mpd;
1641
+ const parseUTCTimingScheme = (mpd) => {
1642
+ const UTCTimingNode = findChildren(mpd, "UTCTiming")[0];
1643
+ if (!UTCTimingNode) {
1644
+ return null;
1645
+ }
1646
+ const attributes = parseAttributes(UTCTimingNode);
1647
+ switch (attributes.schemeIdUri) {
1648
+ case "urn:mpeg:dash:utc:http-head:2014":
1649
+ case "urn:mpeg:dash:utc:http-head:2012":
1650
+ attributes.method = "HEAD";
1651
+ break;
1652
+ case "urn:mpeg:dash:utc:http-xsdate:2014":
1653
+ case "urn:mpeg:dash:utc:http-iso:2014":
1654
+ case "urn:mpeg:dash:utc:http-xsdate:2012":
1655
+ case "urn:mpeg:dash:utc:http-iso:2012":
1656
+ attributes.method = "GET";
1657
+ break;
1658
+ case "urn:mpeg:dash:utc:direct:2014":
1659
+ case "urn:mpeg:dash:utc:direct:2012":
1660
+ attributes.method = "DIRECT";
1661
+ attributes.value = Date.parse(attributes.value);
1662
+ break;
1663
+ case "urn:mpeg:dash:utc:http-ntp:2014":
1664
+ case "urn:mpeg:dash:utc:ntp:2014":
1665
+ case "urn:mpeg:dash:utc:sntp:2014":
1666
+ default:
1667
+ throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);
1668
+ }
1669
+ return attributes;
1735
1670
  };
1736
- /**
1737
- * Parses the manifest for a UTCTiming node, returning the nodes attributes if found
1738
- *
1739
- * @param {string} mpd
1740
- * XML string of the MPD manifest
1741
- * @return {Object|null}
1742
- * Attributes of UTCTiming node specified in the manifest. Null if none found
1743
- */
1744
- var parseUTCTimingScheme = (mpd) => {
1745
- const UTCTimingNode = findChildren(mpd, "UTCTiming")[0];
1746
- if (!UTCTimingNode) return null;
1747
- const attributes = parseAttributes(UTCTimingNode);
1748
- switch (attributes.schemeIdUri) {
1749
- case "urn:mpeg:dash:utc:http-head:2014":
1750
- case "urn:mpeg:dash:utc:http-head:2012":
1751
- attributes.method = "HEAD";
1752
- break;
1753
- case "urn:mpeg:dash:utc:http-xsdate:2014":
1754
- case "urn:mpeg:dash:utc:http-iso:2014":
1755
- case "urn:mpeg:dash:utc:http-xsdate:2012":
1756
- case "urn:mpeg:dash:utc:http-iso:2012":
1757
- attributes.method = "GET";
1758
- break;
1759
- case "urn:mpeg:dash:utc:direct:2014":
1760
- case "urn:mpeg:dash:utc:direct:2012":
1761
- attributes.method = "DIRECT";
1762
- attributes.value = Date.parse(attributes.value);
1763
- break;
1764
- default: throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);
1765
- }
1766
- return attributes;
1671
+ const parse = (manifestString, options = {}) => {
1672
+ const parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);
1673
+ const playlists = toPlaylists(parsedManifestInfo.representationInfo);
1674
+ return toM3u8({
1675
+ dashPlaylists: playlists,
1676
+ locations: parsedManifestInfo.locations,
1677
+ contentSteering: parsedManifestInfo.contentSteeringInfo,
1678
+ sidxMapping: options.sidxMapping,
1679
+ previousManifest: options.previousManifest,
1680
+ eventStream: parsedManifestInfo.eventStream
1681
+ });
1767
1682
  };
1768
- var parse = (manifestString, options = {}) => {
1769
- const parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);
1770
- return toM3u8({
1771
- dashPlaylists: toPlaylists(parsedManifestInfo.representationInfo),
1772
- locations: parsedManifestInfo.locations,
1773
- contentSteering: parsedManifestInfo.contentSteeringInfo,
1774
- sidxMapping: options.sidxMapping,
1775
- previousManifest: options.previousManifest,
1776
- eventStream: parsedManifestInfo.eventStream
1777
- });
1683
+ const parseUTCTiming = (manifestString) => parseUTCTimingScheme(stringToMpdXml(manifestString));
1684
+ export {
1685
+ addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist,
1686
+ generateSidxKey,
1687
+ inheritAttributes,
1688
+ parse,
1689
+ parseUTCTiming,
1690
+ stringToMpdXml,
1691
+ toM3u8,
1692
+ toPlaylists
1778
1693
  };
1779
- /**
1780
- * Parses the manifest for a UTCTiming node, returning the nodes attributes if found
1781
- *
1782
- * @param {string} manifestString
1783
- * XML string of the MPD manifest
1784
- * @return {Object|null}
1785
- * Attributes of UTCTiming node specified in the manifest. Null if none found
1786
- */
1787
- var parseUTCTiming = (manifestString) => parseUTCTimingScheme(stringToMpdXml(manifestString));
1788
- export { addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };