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

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 (1169) hide show
  1. package/dist/chunk-element-plus.cjs.js +1 -0
  2. package/dist/chunk-element-plus.es.js +1442 -0
  3. package/dist/components/article-anchor/components/ArticleAnchorPad.vue.d.ts +2 -6
  4. package/dist/components/community-updates/OCommunityUpdates.vue.d.ts +46 -0
  5. package/dist/components/community-updates/OCommunityUpdatesCard.vue.d.ts +7 -0
  6. package/dist/components/community-updates/index.d.ts +91 -0
  7. package/dist/components/community-updates/types.d.ts +36 -0
  8. package/dist/components/doc-layout/ODocLayout.vue.d.ts +8 -4
  9. package/dist/components/doc-layout/index.d.ts +9 -0
  10. package/dist/components/meeting/config.d.ts +0 -2
  11. package/dist/components/search-doc-result/OSearchDocResult.vue.d.ts +2 -0
  12. package/dist/components/search-doc-result/index.d.ts +6 -0
  13. package/dist/components.cjs.js +55 -89
  14. package/dist/components.css +2 -9
  15. package/dist/components.element.cjs.js +1 -1
  16. package/dist/components.element.es.js +1 -4
  17. package/dist/components.es.js +48365 -66118
  18. package/dist/index.d.ts +1 -0
  19. package/dist/treeshaking/_virtual/@babel/runtime/helpers/esm/extends.js.mjs +9 -10
  20. package/dist/treeshaking/_virtual/@babel/runtime/helpers/extends.js.mjs +16 -22
  21. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/byte-helpers.js.mjs +133 -128
  22. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/codec-helpers.js.mjs +1 -0
  23. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/codecs.js.mjs +152 -146
  24. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/containers.js.mjs +176 -150
  25. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js.mjs +11 -12
  26. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/ebml-helpers.js.mjs +157 -118
  27. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/id3-helpers.js.mjs +21 -30
  28. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/media-groups.js.mjs +20 -12
  29. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/media-types.js.mjs +18 -14
  30. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/mp4-helpers.js.mjs +150 -53
  31. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/nal-helpers.js.mjs +78 -74
  32. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/opus-helpers.js.mjs +10 -0
  33. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/resolve-url.js.mjs +15 -21
  34. package/dist/treeshaking/_virtual/@videojs/vhs-utils/es/stream.js.mjs +55 -51
  35. package/dist/treeshaking/_virtual/@videojs/xhr/lib/http-handler.js.mjs +40 -55
  36. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js.mjs +242 -7
  37. package/dist/treeshaking/_virtual/@videojs/xhr/lib/interceptors.js.mjs +94 -109
  38. package/dist/treeshaking/_virtual/@videojs/xhr/lib/retry.js.mjs +100 -104
  39. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/conventions.js.mjs +177 -142
  40. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom-parser.js.mjs +244 -224
  41. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom.js.mjs +1443 -1449
  42. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/entities.js.mjs +2168 -2149
  43. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js.mjs +12 -5
  44. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/sax.js.mjs +489 -594
  45. package/dist/treeshaking/_virtual/__vite-browser-external.mjs +7 -4
  46. package/dist/treeshaking/_virtual/_plugin-vue_export-helper.mjs +6 -9
  47. package/dist/treeshaking/_virtual/_rolldown/runtime.mjs +27 -0
  48. package/dist/treeshaking/_virtual/cropperjs/dist/cropper.js.mjs +2575 -0
  49. package/dist/treeshaking/_virtual/crypto-js/aes.js.mjs +163 -162
  50. package/dist/treeshaking/_virtual/crypto-js/blowfish.js.mjs +1214 -1197
  51. package/dist/treeshaking/_virtual/crypto-js/cipher-core.js.mjs +683 -649
  52. package/dist/treeshaking/_virtual/crypto-js/core.js.mjs +589 -614
  53. package/dist/treeshaking/_virtual/crypto-js/enc-base64.js.mjs +90 -112
  54. package/dist/treeshaking/_virtual/crypto-js/enc-base64url.js.mjs +97 -123
  55. package/dist/treeshaking/_virtual/crypto-js/enc-utf16.js.mjs +113 -122
  56. package/dist/treeshaking/_virtual/crypto-js/evpkdf.js.mjs +113 -97
  57. package/dist/treeshaking/_virtual/crypto-js/format-hex.js.mjs +56 -65
  58. package/dist/treeshaking/_virtual/crypto-js/hmac.js.mjs +97 -111
  59. package/dist/treeshaking/_virtual/crypto-js/index.js.mjs +84 -7
  60. package/dist/treeshaking/_virtual/crypto-js/lib-typedarrays.js.mjs +30 -49
  61. package/dist/treeshaking/_virtual/crypto-js/md5.js.mjs +205 -183
  62. package/dist/treeshaking/_virtual/crypto-js/mode-cfb.js.mjs +45 -57
  63. package/dist/treeshaking/_virtual/crypto-js/mode-ctr-gladman.js.mjs +62 -85
  64. package/dist/treeshaking/_virtual/crypto-js/mode-ctr.js.mjs +36 -45
  65. package/dist/treeshaking/_virtual/crypto-js/mode-ecb.js.mjs +28 -36
  66. package/dist/treeshaking/_virtual/crypto-js/mode-ofb.js.mjs +34 -43
  67. package/dist/treeshaking/_virtual/crypto-js/pad-ansix923.js.mjs +33 -37
  68. package/dist/treeshaking/_virtual/crypto-js/pad-iso10126.js.mjs +29 -33
  69. package/dist/treeshaking/_virtual/crypto-js/pad-iso97971.js.mjs +28 -32
  70. package/dist/treeshaking/_virtual/crypto-js/pad-nopadding.js.mjs +22 -28
  71. package/dist/treeshaking/_virtual/crypto-js/pad-zeropadding.js.mjs +33 -39
  72. package/dist/treeshaking/_virtual/crypto-js/pbkdf2.js.mjs +119 -104
  73. package/dist/treeshaking/_virtual/crypto-js/rabbit-legacy.js.mjs +139 -134
  74. package/dist/treeshaking/_virtual/crypto-js/rabbit.js.mjs +136 -137
  75. package/dist/treeshaking/_virtual/crypto-js/rc4.js.mjs +105 -91
  76. package/dist/treeshaking/_virtual/crypto-js/ripemd160.js.mjs +510 -485
  77. package/dist/treeshaking/_virtual/crypto-js/sha1.js.mjs +113 -95
  78. package/dist/treeshaking/_virtual/crypto-js/sha224.js.mjs +73 -50
  79. package/dist/treeshaking/_virtual/crypto-js/sha256.js.mjs +142 -125
  80. package/dist/treeshaking/_virtual/crypto-js/sha3.js.mjs +210 -207
  81. package/dist/treeshaking/_virtual/crypto-js/sha384.js.mjs +80 -52
  82. package/dist/treeshaking/_virtual/crypto-js/sha512.js.mjs +307 -287
  83. package/dist/treeshaking/_virtual/crypto-js/tripledes.js.mjs +817 -789
  84. package/dist/treeshaking/_virtual/crypto-js/x64-core.js.mjs +102 -261
  85. package/dist/treeshaking/_virtual/global/document.js.mjs +16 -7
  86. package/dist/treeshaking/_virtual/global/window.js.mjs +12 -7
  87. package/dist/treeshaking/_virtual/is-function/index.js.mjs +13 -20
  88. package/dist/treeshaking/_virtual/m3u8-parser/dist/m3u8-parser.es.js.mjs +1145 -1380
  89. package/dist/treeshaking/_virtual/mpd-parser/dist/mpd-parser.es.js.mjs +1723 -1628
  90. package/dist/treeshaking/_virtual/mux.js/lib/tools/parse-sidx.js.mjs +39 -7
  91. package/dist/treeshaking/_virtual/mux.js/lib/utils/clock.js.mjs +44 -5
  92. package/dist/treeshaking/_virtual/mux.js/lib/utils/numbers.js.mjs +21 -27
  93. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/NotificationFactories.js.mjs +18 -0
  94. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Observable.js.mjs +86 -91
  95. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Subscriber.js.mjs +141 -136
  96. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/Subscription.js.mjs +105 -131
  97. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/config.js.mjs +7 -4
  98. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.mjs +15 -15
  99. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/symbol/observable.js.mjs +3 -4
  100. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.mjs +10 -11
  101. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/arrRemove.js.mjs +6 -7
  102. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/createErrorClass.js.mjs +10 -11
  103. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/errorContext.js.mjs +23 -6
  104. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/identity.js.mjs +3 -4
  105. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/isFunction.js.mjs +3 -4
  106. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/noop.js.mjs +3 -5
  107. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/pipe.js.mjs +9 -14
  108. package/dist/treeshaking/_virtual/rxjs/dist/esm5/internal/util/reportUnhandledError.js.mjs +8 -8
  109. package/dist/treeshaking/_virtual/tslib/tslib.es6.mjs.mjs +60 -54
  110. package/dist/treeshaking/_virtual/video.js/dist/video.es.js.mjs +41510 -39526
  111. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js.mjs +46 -7
  112. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vtt.js.mjs +911 -1082
  113. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vttcue.js.mjs +238 -235
  114. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/vttregion.js.mjs +115 -122
  115. package/dist/treeshaking/_virtual/~icons/components/icon-address.mjs +21 -0
  116. package/dist/treeshaking/_virtual/~icons/components/icon-anchor-expand.mjs +20 -0
  117. package/dist/treeshaking/_virtual/~icons/components/icon-anchor.mjs +22 -0
  118. package/dist/treeshaking/_virtual/~icons/components/icon-arrow-left.mjs +20 -0
  119. package/dist/treeshaking/_virtual/~icons/components/icon-avatar-line.mjs +20 -0
  120. package/dist/treeshaking/_virtual/~icons/components/icon-caret-left.mjs +20 -0
  121. package/dist/treeshaking/_virtual/~icons/components/icon-caret-right.mjs +20 -0
  122. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-down.mjs +20 -0
  123. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-right.mjs +20 -0
  124. package/dist/treeshaking/_virtual/~icons/components/icon-chevron-up.mjs +20 -0
  125. package/dist/treeshaking/_virtual/~icons/components/icon-close.mjs +20 -0
  126. package/dist/treeshaking/_virtual/~icons/components/icon-copy.mjs +20 -0
  127. package/dist/treeshaking/_virtual/~icons/components/icon-delete-hover.mjs +23 -0
  128. package/dist/treeshaking/_virtual/~icons/components/icon-delete.mjs +17 -0
  129. package/dist/treeshaking/_virtual/~icons/components/icon-download.mjs +17 -0
  130. package/dist/treeshaking/_virtual/~icons/components/icon-edit.mjs +40 -0
  131. package/dist/treeshaking/_virtual/~icons/components/icon-email.mjs +21 -0
  132. package/dist/treeshaking/_virtual/~icons/components/icon-expand.mjs +21 -0
  133. package/dist/treeshaking/_virtual/~icons/components/icon-forum.mjs +21 -0
  134. package/dist/treeshaking/_virtual/~icons/components/icon-header-back.mjs +20 -0
  135. package/dist/treeshaking/_virtual/~icons/components/icon-header-menu.mjs +20 -0
  136. package/dist/treeshaking/_virtual/~icons/components/icon-header-search.mjs +20 -0
  137. package/dist/treeshaking/_virtual/~icons/components/icon-image-upload.mjs +20 -0
  138. package/dist/treeshaking/_virtual/~icons/components/icon-image-zoomin.mjs +20 -0
  139. package/dist/treeshaking/_virtual/~icons/components/icon-like.mjs +20 -0
  140. package/dist/treeshaking/_virtual/~icons/components/icon-link.mjs +30 -0
  141. package/dist/treeshaking/_virtual/~icons/components/icon-locale.mjs +20 -0
  142. package/dist/treeshaking/_virtual/~icons/components/icon-menu-fold.mjs +20 -0
  143. package/dist/treeshaking/_virtual/~icons/components/icon-menu-unfold.mjs +20 -0
  144. package/dist/treeshaking/_virtual/~icons/components/icon-moon.mjs +20 -0
  145. package/dist/treeshaking/_virtual/~icons/components/icon-more.mjs +19 -0
  146. package/dist/treeshaking/_virtual/~icons/components/icon-next.mjs +22 -0
  147. package/dist/treeshaking/_virtual/~icons/components/icon-notice.mjs +20 -0
  148. package/dist/treeshaking/_virtual/~icons/components/icon-outlink.mjs +20 -0
  149. package/dist/treeshaking/_virtual/~icons/components/icon-refresh.mjs +21 -0
  150. package/dist/treeshaking/_virtual/~icons/components/icon-relative-search.mjs +21 -0
  151. package/dist/treeshaking/_virtual/~icons/components/icon-search.mjs +17 -0
  152. package/dist/treeshaking/_virtual/~icons/components/icon-smile.mjs +21 -0
  153. package/dist/treeshaking/_virtual/~icons/components/icon-star.mjs +20 -0
  154. package/dist/treeshaking/_virtual/~icons/components/icon-sun.mjs +20 -0
  155. package/dist/treeshaking/_virtual/~icons/components/icon-time.mjs +20 -0
  156. package/dist/treeshaking/_virtual/~icons/components/icon-tips.mjs +17 -0
  157. package/dist/treeshaking/_virtual/~icons/components/icon-unexpand.mjs +22 -0
  158. package/dist/treeshaking/_virtual/~icons/components/icon-unlike.mjs +20 -0
  159. package/dist/treeshaking/_virtual/~icons/components/icon-working.mjs +17 -0
  160. package/dist/treeshaking/_virtual/~icons/events/icon-checked.mjs +20 -0
  161. package/dist/treeshaking/_virtual/~icons/events/icon-competition.mjs +30 -0
  162. package/dist/treeshaking/_virtual/~icons/events/icon-events.mjs +30 -0
  163. package/dist/treeshaking/_virtual/~icons/events/icon-release.mjs +30 -0
  164. package/dist/treeshaking/_virtual/~icons/events/icon-summit.mjs +30 -0
  165. package/dist/treeshaking/_virtual/~icons/meeting/icon-all.mjs +20 -0
  166. package/dist/treeshaking/_virtual/~icons/meeting/icon-copy.mjs +21 -0
  167. package/dist/treeshaking/_virtual/~icons/meeting/icon-event.mjs +21 -0
  168. package/dist/treeshaking/_virtual/~icons/meeting/icon-help.mjs +21 -0
  169. package/dist/treeshaking/_virtual/~icons/meeting/icon-meet.mjs +20 -0
  170. package/dist/treeshaking/_virtual/~icons/meeting/icon-playing.mjs +35 -0
  171. package/dist/treeshaking/_virtual/~icons/meeting/icon-speaker.mjs +17 -0
  172. package/dist/treeshaking/_virtual/~icons/meeting/icon-summit.mjs +21 -0
  173. package/dist/treeshaking/_virtual/~icons/meeting/icon-tip.mjs +21 -0
  174. package/dist/treeshaking/_virtual/~icons/sig/icon-atomgit.mjs +24 -0
  175. package/dist/treeshaking/_virtual/~icons/sig/icon-gitee.mjs +20 -0
  176. package/dist/treeshaking/_virtual/~icons/sig/icon-mail.mjs +17 -0
  177. package/dist/treeshaking/_virtual/~icons/sig/icon-search.mjs +17 -0
  178. package/dist/treeshaking/_virtual/~icons/sig/icon-user.mjs +17 -0
  179. package/dist/treeshaking/_virtual/~icons/sig/sig-space.mjs +20 -0
  180. package/dist/treeshaking/_virtual/~icons/user-center/icon-add-dark.mjs +42 -0
  181. package/dist/treeshaking/_virtual/~icons/user-center/icon-add-new.mjs +17 -0
  182. package/dist/treeshaking/_virtual/~icons/user-center/icon-check.mjs +20 -0
  183. package/dist/treeshaking/_virtual/~icons/user-center/icon-chevron-right.mjs +20 -0
  184. package/dist/treeshaking/_virtual/~icons/user-center/icon-close.mjs +20 -0
  185. package/dist/treeshaking/_virtual/~icons/user-center/icon-done.mjs +20 -0
  186. package/dist/treeshaking/_virtual/~icons/user-center/icon-edit-new.mjs +17 -0
  187. package/dist/treeshaking/_virtual/~icons/user-center/icon-email.mjs +22 -0
  188. package/dist/treeshaking/_virtual/~icons/user-center/icon-eye-off.mjs +20 -0
  189. package/dist/treeshaking/_virtual/~icons/user-center/icon-eye.mjs +20 -0
  190. package/dist/treeshaking/_virtual/~icons/user-center/icon-gitcode-new.mjs +29 -0
  191. package/dist/treeshaking/_virtual/~icons/user-center/icon-gitee.mjs +20 -0
  192. package/dist/treeshaking/_virtual/~icons/user-center/icon-github.mjs +20 -0
  193. package/dist/treeshaking/_virtual/~icons/user-center/icon-loading.mjs +23 -0
  194. package/dist/treeshaking/_virtual/~icons/user-center/icon-minus-dark.mjs +64 -0
  195. package/dist/treeshaking/_virtual/~icons/user-center/icon-minus-new.mjs +17 -0
  196. package/dist/treeshaking/_virtual/~icons/user-center/icon-openatom.mjs +20 -0
  197. package/dist/treeshaking/_virtual/~icons/user-center/icon-phone.mjs +22 -0
  198. package/dist/treeshaking/_virtual/~icons/user-center/icon-refresh.mjs +45 -0
  199. package/dist/treeshaking/_virtual/~icons/user-center/icon-setting.mjs +20 -0
  200. package/dist/treeshaking/_virtual/~icons/user-center/icon-tips.mjs +30 -0
  201. package/dist/treeshaking/_virtual/~icons/user-center/icon-wechat.mjs +18 -0
  202. package/dist/treeshaking/_virtual/~icons/video/icon-material.mjs +21 -0
  203. package/dist/treeshaking/_virtual/~icons/video/icon-video.mjs +30 -0
  204. package/dist/treeshaking/assets/meeting/empty.mjs +3 -0
  205. package/dist/treeshaking/assets/meeting/transparent.mjs +3 -0
  206. package/dist/treeshaking/assets/search/search-empty.mjs +3 -0
  207. package/dist/treeshaking/assets/styles/element-plus.css +302 -0
  208. package/dist/treeshaking/assets/svg-icons/icon-zoom.mjs +3 -0
  209. package/dist/treeshaking/assets/user-center/images/avatar.mjs +3 -0
  210. package/dist/treeshaking/assets/user-center/images/default-user-photo.mjs +3 -0
  211. package/dist/treeshaking/assets/user-center/images/left-arrow-dark.mjs +3 -0
  212. package/dist/treeshaking/assets/user-center/images/left-arrow-light.mjs +3 -0
  213. package/dist/treeshaking/assets/user-center/images/noData.mjs +3 -0
  214. package/dist/treeshaking/assets/user-center/images/warning-dark.mjs +3 -0
  215. package/dist/treeshaking/assets/user-center/images/warning-light.mjs +3 -0
  216. package/dist/treeshaking/components/activity/OActivityApproval.mjs +6 -0
  217. package/dist/treeshaking/components/activity/OActivityApproval.vue_vue_type_script_setup_true_lang.mjs +586 -0
  218. package/dist/treeshaking/components/activity/OActivityForm.mjs +6 -0
  219. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_script_setup_true_lang.mjs +517 -0
  220. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_style_index_0_lang.css +369 -0
  221. package/dist/treeshaking/components/activity/OActivityForm.vue_vue_type_style_index_1_lang.css +332 -0
  222. package/dist/treeshaking/components/activity/OActivityMyCalendar.mjs +6 -0
  223. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue_vue_type_script_setup_true_lang.mjs +622 -0
  224. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue_vue_type_style_index_0_lang.css +1380 -0
  225. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue_vue_type_style_index_1_lang.css +323 -0
  226. package/dist/treeshaking/components/activity/composables/useActivityConfig.mjs +88 -137
  227. package/dist/treeshaking/components/activity/config.mjs +3 -4
  228. package/dist/treeshaking/components/activity/index.mjs +14 -29
  229. package/dist/treeshaking/components/anchor-bar/OAnchorBar.mjs +6 -0
  230. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue_vue_type_script_setup_true_lang.mjs +84 -0
  231. package/dist/treeshaking/components/anchor-bar/index.mjs +6 -9
  232. package/dist/treeshaking/components/article/OArticle.mjs +6 -0
  233. package/dist/treeshaking/components/article/OArticle.vue_vue_type_script_setup_true_lang.mjs +133 -0
  234. package/dist/treeshaking/components/article/OArticleList.mjs +5 -0
  235. package/dist/treeshaking/components/article/OArticleList.vue_vue_type_script_setup_true_lang.mjs +182 -0
  236. package/dist/treeshaking/components/article/OArticleList.vue_vue_type_style_index_0_lang.css +259 -0
  237. package/dist/treeshaking/components/article/components/ArticleTitle.mjs +6 -0
  238. package/dist/treeshaking/components/article/components/ArticleTitle.vue_vue_type_script_setup_true_lang.mjs +77 -0
  239. package/dist/treeshaking/components/article/components/DocTitle.mjs +6 -0
  240. package/dist/treeshaking/components/article/components/DocTitle.vue_vue_type_script_setup_true_lang.mjs +224 -0
  241. package/dist/treeshaking/components/article/index.mjs +10 -17
  242. package/dist/treeshaking/components/article-anchor/OArticleAnchor.mjs +6 -0
  243. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue_vue_type_script_setup_true_lang.mjs +306 -0
  244. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.mjs +6 -0
  245. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue_vue_type_script_setup_true_lang.mjs +32 -0
  246. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.mjs +6 -0
  247. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue_vue_type_script_setup_true_lang.mjs +132 -0
  248. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue_vue_type_style_index_0_scoped_8190c89e_lang.css +47 -0
  249. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.mjs +6 -0
  250. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue.d.ts +2 -6
  251. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue_vue_type_script_setup_true_lang.mjs +46 -0
  252. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue_vue_type_style_index_0_scoped_2ae25d23_lang.css +80 -0
  253. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.mjs +6 -0
  254. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue_vue_type_script_setup_true_lang.mjs +27 -0
  255. package/dist/treeshaking/components/article-anchor/index.mjs +6 -9
  256. package/dist/treeshaking/components/article-pagination/OArticlePagination.mjs +6 -0
  257. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue_vue_type_script_setup_true_lang.mjs +82 -0
  258. package/dist/treeshaking/components/article-pagination/index.mjs +6 -9
  259. package/dist/treeshaking/components/banner/OBanner.mjs +7 -0
  260. package/dist/treeshaking/components/banner/OBanner.vue_vue_type_script_setup_true_lang.mjs +129 -0
  261. package/dist/treeshaking/components/banner/OBannerContent.mjs +6 -0
  262. package/dist/treeshaking/components/banner/OBannerContent.vue_vue_type_script_setup_true_lang.mjs +93 -0
  263. package/dist/treeshaking/components/banner/index.mjs +10 -16
  264. package/dist/treeshaking/components/brand/OBrandFile.mjs +6 -0
  265. package/dist/treeshaking/components/brand/OBrandFile.vue_vue_type_script_setup_true_lang.mjs +59 -0
  266. package/dist/treeshaking/components/brand/OBrandLogo.mjs +7 -0
  267. package/dist/treeshaking/components/brand/OBrandLogo.vue_vue_type_script_setup_true_lang.mjs +101 -0
  268. package/dist/treeshaking/components/brand/OBrandStandard.mjs +6 -0
  269. package/dist/treeshaking/components/brand/OBrandStandard.vue_vue_type_script_setup_true_lang.mjs +51 -0
  270. package/dist/treeshaking/components/brand/index.mjs +14 -23
  271. package/dist/treeshaking/components/brand/utils.mjs +21 -25
  272. package/dist/treeshaking/components/common/AppAvatar.mjs +6 -0
  273. package/dist/treeshaking/components/common/AppAvatar.vue_vue_type_script_setup_true_lang.mjs +73 -0
  274. package/dist/treeshaking/components/common/ClientOnly.mjs +4 -0
  275. package/dist/treeshaking/components/common/ClientOnly.vue_vue_type_script_setup_true_lang.mjs +15 -0
  276. package/dist/treeshaking/components/common/ContentWrapper.mjs +6 -0
  277. package/dist/treeshaking/components/common/ContentWrapper.vue_vue_type_script_setup_true_lang.mjs +40 -0
  278. package/dist/treeshaking/components/common/TooltipText.mjs +5 -0
  279. package/dist/treeshaking/components/common/TooltipText.vue_vue_type_script_setup_true_lang.mjs +92 -0
  280. package/dist/treeshaking/components/common/WordAvatar.mjs +5 -0
  281. package/dist/treeshaking/components/common/WordAvatar.vue_vue_type_script_setup_true_lang.mjs +77 -0
  282. package/dist/treeshaking/components/community-updates/OCommunityUpdates.mjs +6 -0
  283. package/dist/treeshaking/components/community-updates/OCommunityUpdates.vue.d.ts +46 -0
  284. package/dist/treeshaking/components/community-updates/OCommunityUpdates.vue_vue_type_script_setup_true_lang.mjs +100 -0
  285. package/dist/treeshaking/components/community-updates/OCommunityUpdates.vue_vue_type_style_index_0_scoped_1da301c6_lang.css +107 -0
  286. package/dist/treeshaking/components/community-updates/OCommunityUpdatesCard.mjs +5 -0
  287. package/dist/treeshaking/components/community-updates/OCommunityUpdatesCard.vue.d.ts +7 -0
  288. package/dist/treeshaking/components/community-updates/OCommunityUpdatesCard.vue_vue_type_script_setup_true_lang.mjs +49 -0
  289. package/dist/treeshaking/components/community-updates/OCommunityUpdatesCard.vue_vue_type_style_index_0_lang.css +130 -0
  290. package/dist/treeshaking/components/community-updates/index.d.ts +91 -0
  291. package/dist/treeshaking/components/community-updates/index.mjs +10 -0
  292. package/dist/treeshaking/components/community-updates/types.d.ts +36 -0
  293. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.mjs +4 -0
  294. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue_vue_type_script_setup_true_lang.mjs +30 -0
  295. package/dist/treeshaking/components/config-provider/index.mjs +6 -9
  296. package/dist/treeshaking/components/cookie-notice/OCookieNotice.mjs +6 -0
  297. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue_vue_type_script_setup_true_lang.mjs +283 -0
  298. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue_vue_type_style_index_0_scoped_a7993ee9_lang.css +324 -0
  299. package/dist/treeshaking/components/cookie-notice/index.mjs +6 -9
  300. package/dist/treeshaking/components/doc-layout/ODocLayout.mjs +6 -0
  301. package/dist/treeshaking/components/doc-layout/ODocLayout.vue.d.ts +8 -4
  302. package/dist/treeshaking/components/doc-layout/ODocLayout.vue_vue_type_script_setup_true_lang.mjs +168 -0
  303. package/dist/treeshaking/components/doc-layout/ODocLayout.vue_vue_type_style_index_0_scoped_b4aff4ce_lang.css +306 -0
  304. package/dist/treeshaking/components/doc-layout/index.d.ts +9 -0
  305. package/dist/treeshaking/components/doc-layout/index.mjs +6 -9
  306. package/dist/treeshaking/components/element-plus/OElCookieNotice.mjs +7 -0
  307. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_script_setup_true_lang.mjs +291 -0
  308. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_style_index_0_lang.css +308 -0
  309. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue_vue_type_style_index_1_scoped_d9e2bcf9_lang.css +699 -0
  310. package/dist/treeshaking/components/empty/404.mjs +3 -0
  311. package/dist/treeshaking/components/empty/404_dark.mjs +3 -0
  312. package/dist/treeshaking/components/empty/OEmpty.mjs +6 -0
  313. package/dist/treeshaking/components/empty/OEmpty.vue_vue_type_script_setup_true_lang.mjs +39 -0
  314. package/dist/treeshaking/components/empty/index.mjs +6 -9
  315. package/dist/treeshaking/components/events/OEventsApply.mjs +5 -0
  316. package/dist/treeshaking/components/events/OEventsApply.vue_vue_type_script_setup_true_lang.mjs +64 -0
  317. package/dist/treeshaking/components/events/OEventsCalendar.mjs +5 -0
  318. package/dist/treeshaking/components/events/OEventsCalendar.vue_vue_type_script_setup_true_lang.mjs +205 -0
  319. package/dist/treeshaking/components/events/OEventsList.mjs +5 -0
  320. package/dist/treeshaking/components/events/OEventsList.vue_vue_type_script_setup_true_lang.mjs +195 -0
  321. package/dist/treeshaking/components/events/config.mjs +30 -34
  322. package/dist/treeshaking/components/events/index.mjs +15 -26
  323. package/dist/treeshaking/components/events/types.mjs +8 -9
  324. package/dist/treeshaking/components/events/utils.mjs +10 -5
  325. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.mjs +6 -0
  326. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue_vue_type_script_setup_true_lang.mjs +174 -0
  327. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.mjs +6 -0
  328. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue_vue_type_script_setup_true_lang.mjs +276 -0
  329. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.mjs +4 -0
  330. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue_vue_type_script_setup_true_lang.mjs +102 -0
  331. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.mjs +6 -0
  332. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue_vue_type_script_setup_true_lang.mjs +112 -0
  333. package/dist/treeshaking/components/feedback-doc/index.mjs +18 -30
  334. package/dist/treeshaking/components/float-poster/OFloatPoster.mjs +6 -0
  335. package/dist/treeshaking/components/float-poster/OFloatPoster.vue_vue_type_script_setup_true_lang.mjs +77 -0
  336. package/dist/treeshaking/components/float-poster/index.mjs +6 -9
  337. package/dist/treeshaking/components/footer/OFooter.mjs +6 -0
  338. package/dist/treeshaking/components/footer/OFooter.vue_vue_type_script_setup_true_lang.mjs +78 -0
  339. package/dist/treeshaking/components/footer/components/FooterList.mjs +6 -0
  340. package/dist/treeshaking/components/footer/components/FooterList.vue_vue_type_script_setup_true_lang.mjs +150 -0
  341. package/dist/treeshaking/components/footer/components/FooterSimple.mjs +6 -0
  342. package/dist/treeshaking/components/footer/components/FooterSimple.vue_vue_type_script_setup_true_lang.mjs +100 -0
  343. package/dist/treeshaking/components/footer/index.mjs +6 -9
  344. package/dist/treeshaking/components/header/OHeader.mjs +6 -0
  345. package/dist/treeshaking/components/header/OHeader.vue_vue_type_script_setup_true_lang.mjs +256 -0
  346. package/dist/treeshaking/components/header/OHeaderMobile.mjs +6 -0
  347. package/dist/treeshaking/components/header/OHeaderMobile.vue_vue_type_script_setup_true_lang.mjs +121 -0
  348. package/dist/treeshaking/components/header/components/HeaderContent.mjs +6 -0
  349. package/dist/treeshaking/components/header/components/HeaderContent.vue_vue_type_script_setup_true_lang.mjs +286 -0
  350. package/dist/treeshaking/components/header/components/HeaderFlatten.mjs +6 -0
  351. package/dist/treeshaking/components/header/components/HeaderFlatten.vue_vue_type_script_setup_true_lang.mjs +247 -0
  352. package/dist/treeshaking/components/header/components/HeaderNav.mjs +6 -0
  353. package/dist/treeshaking/components/header/components/HeaderNav.vue_vue_type_script_setup_true_lang.mjs +210 -0
  354. package/dist/treeshaking/components/header/components/HeaderNavMobile.mjs +6 -0
  355. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue_vue_type_script_setup_true_lang.mjs +197 -0
  356. package/dist/treeshaking/components/header/index.mjs +11 -16
  357. package/dist/treeshaking/components/header/types.mjs +8 -9
  358. package/dist/treeshaking/components/header/utils.mjs +10 -18
  359. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.mjs +7 -0
  360. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue_vue_type_script_setup_true_lang.mjs +109 -0
  361. package/dist/treeshaking/components/header-language-switcher/index.mjs +6 -9
  362. package/dist/treeshaking/components/header-search/OHeaderSearch.mjs +6 -0
  363. package/dist/treeshaking/components/header-search/OHeaderSearch.vue_vue_type_script_setup_true_lang.mjs +434 -0
  364. package/dist/treeshaking/components/header-search/index.mjs +6 -9
  365. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.mjs +6 -0
  366. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue_vue_type_script_setup_true_lang.mjs +73 -0
  367. package/dist/treeshaking/components/header-source-code/index.mjs +6 -9
  368. package/dist/treeshaking/components/header-theme/OHeaderTheme.mjs +6 -0
  369. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue_vue_type_script_setup_true_lang.mjs +75 -0
  370. package/dist/treeshaking/components/header-theme/index.mjs +6 -9
  371. package/dist/treeshaking/components/header-user/OHeaderUser.mjs +7 -0
  372. package/dist/treeshaking/components/header-user/OHeaderUser.vue_vue_type_script_setup_true_lang.mjs +124 -0
  373. package/dist/treeshaking/components/header-user/index.mjs +6 -9
  374. package/dist/treeshaking/components/html-viewer/OHtmlViewer.mjs +6 -0
  375. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue_vue_type_script_setup_true_lang.mjs +87 -0
  376. package/dist/treeshaking/components/html-viewer/index.mjs +6 -9
  377. package/dist/treeshaking/components/html-viewer/utils.mjs +71 -66
  378. package/dist/treeshaking/components/icon/index.mjs +14 -10
  379. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.mjs +6 -0
  380. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue_vue_type_script_setup_true_lang.mjs +15 -0
  381. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.mjs +6 -0
  382. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue_vue_type_script_setup_true_lang.mjs +145 -0
  383. package/dist/treeshaking/components/logo-swiper/index.mjs +10 -16
  384. package/dist/treeshaking/components/markdown/OMarkdown.mjs +7 -0
  385. package/dist/treeshaking/components/markdown/OMarkdown.vue_vue_type_script_setup_true_lang.mjs +180 -0
  386. package/dist/treeshaking/components/markdown/components/MarkdownCode.mjs +7 -0
  387. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue_vue_type_script_setup_true_lang.mjs +94 -0
  388. package/dist/treeshaking/components/markdown/components/MarkdownImage.mjs +6 -0
  389. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue_vue_type_script_setup_true_lang.mjs +67 -0
  390. package/dist/treeshaking/components/markdown/components/MarkdownTable.mjs +6 -0
  391. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue_vue_type_script_setup_true_lang.mjs +44 -0
  392. package/dist/treeshaking/components/markdown/components/MarkdownTableData.mjs +6 -0
  393. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue_vue_type_script_setup_true_lang.mjs +145 -0
  394. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.mjs +6 -0
  395. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue_vue_type_script_setup_true_lang.mjs +45 -0
  396. package/dist/treeshaking/components/markdown/components/MarkdownTitle.mjs +6 -0
  397. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue_vue_type_script_setup_true_lang.mjs +46 -0
  398. package/dist/treeshaking/components/markdown/index.mjs +6 -9
  399. package/dist/treeshaking/components/markdown/replacer/code.mjs +16 -20
  400. package/dist/treeshaking/components/markdown/replacer/h2.mjs +13 -19
  401. package/dist/treeshaking/components/markdown/replacer/img.mjs +13 -19
  402. package/dist/treeshaking/components/markdown/replacer/table.mjs +13 -19
  403. package/dist/treeshaking/components/meeting/OMeetingCalendar.mjs +5 -0
  404. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue_vue_type_script_setup_true_lang.mjs +470 -0
  405. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue_vue_type_style_index_0_lang.css +1105 -0
  406. package/dist/treeshaking/components/meeting/OMeetingForm.mjs +6 -0
  407. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_script_setup_true_lang.mjs +857 -0
  408. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_style_index_0_lang.css +771 -0
  409. package/dist/treeshaking/components/meeting/OMeetingForm.vue_vue_type_style_index_1_lang.css +363 -0
  410. package/dist/treeshaking/components/meeting/OMeetingMinutes.mjs +5 -0
  411. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue_vue_type_script_setup_true_lang.mjs +307 -0
  412. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.mjs +6 -0
  413. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue_vue_type_script_setup_true_lang.mjs +52 -0
  414. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.mjs +6 -0
  415. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue_vue_type_script_setup_true_lang.mjs +661 -0
  416. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue_vue_type_style_index_0_lang.css +1349 -0
  417. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue_vue_type_style_index_1_lang.css +335 -0
  418. package/dist/treeshaking/components/meeting/OMeetingPlayback.mjs +5 -0
  419. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue_vue_type_script_setup_true_lang.mjs +328 -0
  420. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.mjs +5 -0
  421. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue_vue_type_script_setup_true_lang.mjs +189 -0
  422. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.mjs +5 -0
  423. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue_vue_type_script_setup_true_lang.mjs +329 -0
  424. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.mjs +5 -0
  425. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue_vue_type_script_setup_true_lang.mjs +281 -0
  426. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.mjs +6 -0
  427. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue_vue_type_script_setup_true_lang.mjs +112 -0
  428. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue_vue_type_style_index_0_lang.css +384 -0
  429. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue_vue_type_style_index_1_lang.css +348 -0
  430. package/dist/treeshaking/components/meeting/components/OMeetingDetail.mjs +5 -0
  431. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue_vue_type_script_setup_true_lang.mjs +245 -0
  432. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.mjs +6 -0
  433. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue_vue_type_script_setup_true_lang.mjs +314 -0
  434. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue_vue_type_style_index_0_lang.css +748 -0
  435. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue_vue_type_style_index_1_lang.css +349 -0
  436. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.mjs +5 -0
  437. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue_vue_type_script_setup_true_lang.mjs +208 -0
  438. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.mjs +6 -0
  439. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue_vue_type_script_setup_true_lang.mjs +72 -0
  440. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.mjs +5 -0
  441. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue_vue_type_script_setup_true_lang.mjs +118 -0
  442. package/dist/treeshaking/components/meeting/composables/useMeetingConfig.mjs +130 -94
  443. package/dist/treeshaking/components/meeting/config.d.ts +0 -2
  444. package/dist/treeshaking/components/meeting/config.mjs +16 -20
  445. package/dist/treeshaking/components/meeting/index.mjs +35 -67
  446. package/dist/treeshaking/components/meeting/types.mjs +15 -17
  447. package/dist/treeshaking/components/meeting/utils.mjs +56 -72
  448. package/dist/treeshaking/components/org/OOrgDesc.mjs +6 -0
  449. package/dist/treeshaking/components/org/OOrgDesc.vue_vue_type_script_setup_true_lang.mjs +39 -0
  450. package/dist/treeshaking/components/org/OOrgMembers.mjs +6 -0
  451. package/dist/treeshaking/components/org/OOrgMembers.vue_vue_type_script_setup_true_lang.mjs +86 -0
  452. package/dist/treeshaking/components/org/index.mjs +10 -16
  453. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.mjs +4 -0
  454. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue_vue_type_script_setup_true_lang.mjs +85 -0
  455. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.mjs +6 -0
  456. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue_vue_type_script_setup_true_lang.mjs +103 -0
  457. package/dist/treeshaking/components/recursion-menu/index.mjs +11 -16
  458. package/dist/treeshaking/components/recursion-menu/types.mjs +4 -4
  459. package/dist/treeshaking/components/search/OSearchInput.mjs +6 -0
  460. package/dist/treeshaking/components/search/OSearchInput.vue_vue_type_script_setup_true_lang.mjs +407 -0
  461. package/dist/treeshaking/components/search/composables/useImageSearch.mjs +114 -132
  462. package/dist/treeshaking/components/search/composables/useKeywordHighlight.mjs +33 -26
  463. package/dist/treeshaking/components/search/composables/useSearchHistory.mjs +53 -56
  464. package/dist/treeshaking/components/search/index.mjs +6 -9
  465. package/dist/treeshaking/components/search/internal/HighlightText.mjs +6 -0
  466. package/dist/treeshaking/components/search/internal/HighlightText.vue_vue_type_script_setup_true_lang.mjs +34 -0
  467. package/dist/treeshaking/components/search/internal/SearchImageInput.mjs +7 -0
  468. package/dist/treeshaking/components/search/internal/SearchImageInput.vue_vue_type_script_setup_true_lang.mjs +291 -0
  469. package/dist/treeshaking/components/search/internal/SearchPanel.mjs +6 -0
  470. package/dist/treeshaking/components/search/internal/SearchPanel.vue_vue_type_script_setup_true_lang.mjs +221 -0
  471. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.mjs +6 -0
  472. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue.d.ts +2 -0
  473. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue_vue_type_script_setup_true_lang.mjs +175 -0
  474. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue_vue_type_style_index_0_scoped_9eb9bdd4_lang.css +156 -0
  475. package/dist/treeshaking/components/search-doc-result/index.d.ts +6 -0
  476. package/dist/treeshaking/components/search-doc-result/index.mjs +6 -9
  477. package/dist/treeshaking/components/search-result/OSearchResult.mjs +6 -0
  478. package/dist/treeshaking/components/search-result/OSearchResult.vue_vue_type_script_setup_true_lang.mjs +154 -0
  479. package/dist/treeshaking/components/search-result/OSearchResult.vue_vue_type_style_index_0_scoped_a8453c65_lang.css +165 -0
  480. package/dist/treeshaking/components/search-result/OSearchResultHeader.mjs +6 -0
  481. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue_vue_type_script_setup_true_lang.mjs +102 -0
  482. package/dist/treeshaking/components/search-result/OSearchResultItem.mjs +6 -0
  483. package/dist/treeshaking/components/search-result/OSearchResultItem.vue_vue_type_script_setup_true_lang.mjs +89 -0
  484. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.mjs +6 -0
  485. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue_vue_type_script_setup_true_lang.mjs +25 -0
  486. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.mjs +6 -0
  487. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue_vue_type_script_setup_true_lang.mjs +128 -0
  488. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.mjs +6 -0
  489. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue_vue_type_script_setup_true_lang.mjs +132 -0
  490. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.mjs +6 -0
  491. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue_vue_type_script_setup_true_lang.mjs +43 -0
  492. package/dist/treeshaking/components/search-result/index.mjs +14 -23
  493. package/dist/treeshaking/components/section/OSection.mjs +6 -0
  494. package/dist/treeshaking/components/section/OSection.vue_vue_type_script_setup_true_lang.mjs +67 -0
  495. package/dist/treeshaking/components/section/index.mjs +6 -9
  496. package/dist/treeshaking/components/sig/OSigDetail.mjs +5 -0
  497. package/dist/treeshaking/components/sig/OSigDetail.vue_vue_type_script_setup_true_lang.mjs +189 -0
  498. package/dist/treeshaking/components/sig/OSigList.mjs +5 -0
  499. package/dist/treeshaking/components/sig/OSigList.vue_vue_type_script_setup_true_lang.mjs +513 -0
  500. package/dist/treeshaking/components/sig/OSigList.vue_vue_type_style_index_0_lang.css +850 -0
  501. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.mjs +5 -0
  502. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue_vue_type_script_setup_true_lang.mjs +69 -0
  503. package/dist/treeshaking/components/sig/components/OSigItem.mjs +5 -0
  504. package/dist/treeshaking/components/sig/components/OSigItem.vue_vue_type_script_setup_true_lang.mjs +154 -0
  505. package/dist/treeshaking/components/sig/components/OSigMember.mjs +5 -0
  506. package/dist/treeshaking/components/sig/components/OSigMember.vue_vue_type_script_setup_true_lang.mjs +190 -0
  507. package/dist/treeshaking/components/sig/components/OSigRepo.mjs +5 -0
  508. package/dist/treeshaking/components/sig/components/OSigRepo.vue_vue_type_script_setup_true_lang.mjs +181 -0
  509. package/dist/treeshaking/components/sig/components/OSigUserContribute.mjs +5 -0
  510. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue_vue_type_script_setup_true_lang.mjs +326 -0
  511. package/dist/treeshaking/components/sig/components/utils.mjs +61 -38
  512. package/dist/treeshaking/components/sig/index.mjs +10 -18
  513. package/dist/treeshaking/components/summit/OSummit.mjs +6 -0
  514. package/dist/treeshaking/components/summit/OSummit.vue_vue_type_script_setup_true_lang.mjs +59 -0
  515. package/dist/treeshaking/components/summit/OSummitIntro.mjs +6 -0
  516. package/dist/treeshaking/components/summit/OSummitIntro.vue_vue_type_script_setup_true_lang.mjs +22 -0
  517. package/dist/treeshaking/components/summit/OSummitLive.mjs +6 -0
  518. package/dist/treeshaking/components/summit/OSummitLive.vue_vue_type_script_setup_true_lang.mjs +141 -0
  519. package/dist/treeshaking/components/summit/OSummitSchedule.mjs +7 -0
  520. package/dist/treeshaking/components/summit/OSummitSchedule.vue_vue_type_script_setup_true_lang.mjs +229 -0
  521. package/dist/treeshaking/components/summit/components/OSummitTabs.mjs +6 -0
  522. package/dist/treeshaking/components/summit/components/OSummitTabs.vue_vue_type_script_setup_true_lang.mjs +127 -0
  523. package/dist/treeshaking/components/summit/index.mjs +18 -30
  524. package/dist/treeshaking/components/summit/utils.mjs +103 -88
  525. package/dist/treeshaking/components/user-center/OAccountSecurity.mjs +6 -0
  526. package/dist/treeshaking/components/user-center/OAccountSecurity.vue_vue_type_script_setup_true_lang.mjs +298 -0
  527. package/dist/treeshaking/components/user-center/OAccountSecurity.vue_vue_type_style_index_0_scoped_34dbfef7_lang.css +253 -0
  528. package/dist/treeshaking/components/user-center/OAccountSetting.mjs +6 -0
  529. package/dist/treeshaking/components/user-center/OAccountSetting.vue_vue_type_script_setup_true_lang.mjs +337 -0
  530. package/dist/treeshaking/components/user-center/OAccountSetting.vue_vue_type_style_index_0_scoped_5887ac06_lang.css +284 -0
  531. package/dist/treeshaking/components/user-center/OAppHeader.mjs +6 -0
  532. package/dist/treeshaking/components/user-center/OAppHeader.vue_vue_type_script_setup_true_lang.mjs +215 -0
  533. package/dist/treeshaking/components/user-center/OAsideBar.mjs +6 -0
  534. package/dist/treeshaking/components/user-center/OAsideBar.vue_vue_type_script_setup_true_lang.mjs +89 -0
  535. package/dist/treeshaking/components/user-center/OLayout.mjs +6 -0
  536. package/dist/treeshaking/components/user-center/OLayout.vue_vue_type_script_setup_true_lang.mjs +19 -0
  537. package/dist/treeshaking/components/user-center/OTheAccountManage.mjs +6 -0
  538. package/dist/treeshaking/components/user-center/OTheAccountManage.vue_vue_type_script_setup_true_lang.mjs +14 -0
  539. package/dist/treeshaking/components/user-center/OTheCreateMeeting.mjs +6 -0
  540. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue_vue_type_script_setup_true_lang.mjs +90 -0
  541. package/dist/treeshaking/components/user-center/OTheMeeting.mjs +6 -0
  542. package/dist/treeshaking/components/user-center/OTheMeeting.vue_vue_type_script_setup_true_lang.mjs +111 -0
  543. package/dist/treeshaking/components/user-center/OThirdPartyBindings.mjs +6 -0
  544. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue_vue_type_script_setup_true_lang.mjs +343 -0
  545. package/dist/treeshaking/components/user-center/OUserInfo.mjs +8 -0
  546. package/dist/treeshaking/components/user-center/OUserInfo.vue_vue_type_script_setup_true_lang.mjs +491 -0
  547. package/dist/treeshaking/components/user-center/const/common.const.mjs +22 -30
  548. package/dist/treeshaking/components/user-center/index.mjs +42 -72
  549. package/dist/treeshaking/components/user-center/internal/OAppDialog.mjs +6 -0
  550. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue_vue_type_script_setup_true_lang.mjs +363 -0
  551. package/dist/treeshaking/components/user-center/internal/OAppEmpty.mjs +6 -0
  552. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue_vue_type_script_setup_true_lang.mjs +30 -0
  553. package/dist/treeshaking/components/user-center/internal/OCommonHeader.mjs +6 -0
  554. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue_vue_type_script_setup_true_lang.mjs +165 -0
  555. package/dist/treeshaking/components/user-center/internal/OCountdownButton.mjs +4 -0
  556. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue_vue_type_script_setup_true_lang.mjs +55 -0
  557. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.mjs +7 -0
  558. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue_vue_type_script_setup_true_lang.mjs +281 -0
  559. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.mjs +7 -0
  560. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue_vue_type_script_setup_true_lang.mjs +121 -0
  561. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.mjs +7 -0
  562. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue_vue_type_script_setup_true_lang.mjs +134 -0
  563. package/dist/treeshaking/components/user-center/internal/OMaskEye.mjs +6 -0
  564. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue_vue_type_script_setup_true_lang.mjs +26 -0
  565. package/dist/treeshaking/components/user-center/internal/OModifyPwd.mjs +6 -0
  566. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue_vue_type_script_setup_true_lang.mjs +401 -0
  567. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.mjs +6 -0
  568. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue_vue_type_script_setup_true_lang.mjs +118 -0
  569. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.mjs +6 -0
  570. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue_vue_type_script_setup_true_lang.mjs +97 -0
  571. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.mjs +6 -0
  572. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue_vue_type_script_setup_true_lang.mjs +88 -0
  573. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.mjs +7 -0
  574. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue_vue_type_script_setup_true_lang.mjs +347 -0
  575. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue_vue_type_style_index_0_scoped_7067a565_lang.css +530 -0
  576. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue_vue_type_style_index_1_lang.css +309 -0
  577. package/dist/treeshaking/components/user-center/rolesMap.mjs +16 -21
  578. package/dist/treeshaking/components/user-center/utils/helper.mjs +7 -5
  579. package/dist/treeshaking/components/user-center/utils/rules.mjs +99 -136
  580. package/dist/treeshaking/components/user-center/utils/utils.mjs +30 -38
  581. package/dist/treeshaking/components/user-center/verify/Verify.mjs +58 -0
  582. package/dist/treeshaking/components/user-center/verify/Verify.vue_vue_type_script_lang.mjs +72 -0
  583. package/dist/treeshaking/components/user-center/verify/VerifySlide.mjs +105 -0
  584. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue_vue_type_script_lang.mjs +334 -0
  585. package/dist/treeshaking/components/user-center/verify/utils/ase.mjs +15 -11
  586. package/dist/treeshaking/components/user-center/verify/utils/util.mjs +19 -32
  587. package/dist/treeshaking/components/video/OVideoDetail.mjs +5 -0
  588. package/dist/treeshaking/components/video/OVideoDetail.vue_vue_type_script_setup_true_lang.mjs +206 -0
  589. package/dist/treeshaking/components/video/index.mjs +6 -10
  590. package/dist/treeshaking/i18n/en.mjs +596 -603
  591. package/dist/treeshaking/i18n/index.mjs +41 -45
  592. package/dist/treeshaking/i18n/zh.mjs +599 -606
  593. package/dist/treeshaking/index.d.ts +1 -0
  594. package/dist/treeshaking/index.mjs +9 -87
  595. package/dist/treeshaking/shared/anchor.mjs +3 -8
  596. package/dist/treeshaking/shared/provide.mjs +3 -4
  597. package/dist/treeshaking/shared/theme.mjs +22 -23
  598. package/package.json +1 -1
  599. package/dist/chunk-OElCookieNotice.cjs.js +0 -1
  600. package/dist/chunk-OElCookieNotice.es.js +0 -1525
  601. package/dist/treeshaking/_virtual/@babel/runtime/helpers/extends.js2.mjs +0 -4
  602. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js2.mjs +0 -300
  603. package/dist/treeshaking/_virtual/@videojs/xhr/lib/index.js3.mjs +0 -4
  604. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/conventions.js2.mjs +0 -4
  605. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom-parser.js2.mjs +0 -4
  606. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/dom.js2.mjs +0 -4
  607. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/entities.js2.mjs +0 -4
  608. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js2.mjs +0 -16
  609. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/index.js3.mjs +0 -4
  610. package/dist/treeshaking/_virtual/@xmldom/xmldom/lib/sax.js2.mjs +0 -4
  611. package/dist/treeshaking/_virtual/___vite-browser-external.mjs +0 -6
  612. package/dist/treeshaking/_virtual/_commonjs-dynamic-modules.mjs +0 -6
  613. package/dist/treeshaking/_virtual/_commonjsHelpers.mjs +0 -33
  614. package/dist/treeshaking/_virtual/cropperjs/dist/cropper.esm.js.mjs +0 -2739
  615. package/dist/treeshaking/_virtual/crypto-js/aes.js2.mjs +0 -4
  616. package/dist/treeshaking/_virtual/crypto-js/blowfish.js2.mjs +0 -4
  617. package/dist/treeshaking/_virtual/crypto-js/cipher-core.js2.mjs +0 -4
  618. package/dist/treeshaking/_virtual/crypto-js/core.js2.mjs +0 -4
  619. package/dist/treeshaking/_virtual/crypto-js/enc-base64.js2.mjs +0 -4
  620. package/dist/treeshaking/_virtual/crypto-js/enc-base64url.js2.mjs +0 -4
  621. package/dist/treeshaking/_virtual/crypto-js/enc-utf16.js2.mjs +0 -4
  622. package/dist/treeshaking/_virtual/crypto-js/evpkdf.js2.mjs +0 -4
  623. package/dist/treeshaking/_virtual/crypto-js/format-hex.js2.mjs +0 -4
  624. package/dist/treeshaking/_virtual/crypto-js/hmac.js2.mjs +0 -4
  625. package/dist/treeshaking/_virtual/crypto-js/index.js2.mjs +0 -55
  626. package/dist/treeshaking/_virtual/crypto-js/index.js3.mjs +0 -4
  627. package/dist/treeshaking/_virtual/crypto-js/lib-typedarrays.js2.mjs +0 -4
  628. package/dist/treeshaking/_virtual/crypto-js/md5.js2.mjs +0 -4
  629. package/dist/treeshaking/_virtual/crypto-js/mode-cfb.js2.mjs +0 -4
  630. package/dist/treeshaking/_virtual/crypto-js/mode-ctr-gladman.js2.mjs +0 -4
  631. package/dist/treeshaking/_virtual/crypto-js/mode-ctr.js2.mjs +0 -4
  632. package/dist/treeshaking/_virtual/crypto-js/mode-ecb.js2.mjs +0 -4
  633. package/dist/treeshaking/_virtual/crypto-js/mode-ofb.js2.mjs +0 -4
  634. package/dist/treeshaking/_virtual/crypto-js/pad-ansix923.js2.mjs +0 -4
  635. package/dist/treeshaking/_virtual/crypto-js/pad-iso10126.js2.mjs +0 -4
  636. package/dist/treeshaking/_virtual/crypto-js/pad-iso97971.js2.mjs +0 -4
  637. package/dist/treeshaking/_virtual/crypto-js/pad-nopadding.js2.mjs +0 -4
  638. package/dist/treeshaking/_virtual/crypto-js/pad-zeropadding.js2.mjs +0 -4
  639. package/dist/treeshaking/_virtual/crypto-js/pbkdf2.js2.mjs +0 -4
  640. package/dist/treeshaking/_virtual/crypto-js/rabbit-legacy.js2.mjs +0 -4
  641. package/dist/treeshaking/_virtual/crypto-js/rabbit.js2.mjs +0 -4
  642. package/dist/treeshaking/_virtual/crypto-js/rc4.js2.mjs +0 -4
  643. package/dist/treeshaking/_virtual/crypto-js/ripemd160.js2.mjs +0 -4
  644. package/dist/treeshaking/_virtual/crypto-js/sha1.js2.mjs +0 -4
  645. package/dist/treeshaking/_virtual/crypto-js/sha224.js2.mjs +0 -4
  646. package/dist/treeshaking/_virtual/crypto-js/sha256.js2.mjs +0 -4
  647. package/dist/treeshaking/_virtual/crypto-js/sha3.js2.mjs +0 -4
  648. package/dist/treeshaking/_virtual/crypto-js/sha384.js2.mjs +0 -4
  649. package/dist/treeshaking/_virtual/crypto-js/sha512.js2.mjs +0 -4
  650. package/dist/treeshaking/_virtual/crypto-js/tripledes.js2.mjs +0 -4
  651. package/dist/treeshaking/_virtual/crypto-js/x64-core.js2.mjs +0 -4
  652. package/dist/treeshaking/_virtual/global/document.js2.mjs +0 -24
  653. package/dist/treeshaking/_virtual/global/window.js2.mjs +0 -22
  654. package/dist/treeshaking/_virtual/icon-add-dark.mjs +0 -40
  655. package/dist/treeshaking/_virtual/icon-add-new.mjs +0 -17
  656. package/dist/treeshaking/_virtual/icon-address.mjs +0 -21
  657. package/dist/treeshaking/_virtual/icon-all.mjs +0 -20
  658. package/dist/treeshaking/_virtual/icon-anchor-expand.mjs +0 -20
  659. package/dist/treeshaking/_virtual/icon-anchor.mjs +0 -22
  660. package/dist/treeshaking/_virtual/icon-arrow-left.mjs +0 -20
  661. package/dist/treeshaking/_virtual/icon-atomgit.mjs +0 -25
  662. package/dist/treeshaking/_virtual/icon-avatar-line.mjs +0 -20
  663. package/dist/treeshaking/_virtual/icon-caret-left.mjs +0 -20
  664. package/dist/treeshaking/_virtual/icon-caret-right.mjs +0 -20
  665. package/dist/treeshaking/_virtual/icon-check.mjs +0 -20
  666. package/dist/treeshaking/_virtual/icon-checked.mjs +0 -20
  667. package/dist/treeshaking/_virtual/icon-chevron-down.mjs +0 -20
  668. package/dist/treeshaking/_virtual/icon-chevron-right.mjs +0 -20
  669. package/dist/treeshaking/_virtual/icon-chevron-right2.mjs +0 -20
  670. package/dist/treeshaking/_virtual/icon-chevron-up.mjs +0 -20
  671. package/dist/treeshaking/_virtual/icon-close.mjs +0 -20
  672. package/dist/treeshaking/_virtual/icon-close2.mjs +0 -20
  673. package/dist/treeshaking/_virtual/icon-competition.mjs +0 -31
  674. package/dist/treeshaking/_virtual/icon-copy.mjs +0 -21
  675. package/dist/treeshaking/_virtual/icon-copy2.mjs +0 -20
  676. package/dist/treeshaking/_virtual/icon-delete-hover.mjs +0 -24
  677. package/dist/treeshaking/_virtual/icon-delete.mjs +0 -17
  678. package/dist/treeshaking/_virtual/icon-done.mjs +0 -20
  679. package/dist/treeshaking/_virtual/icon-download.mjs +0 -17
  680. package/dist/treeshaking/_virtual/icon-edit-new.mjs +0 -17
  681. package/dist/treeshaking/_virtual/icon-edit.mjs +0 -38
  682. package/dist/treeshaking/_virtual/icon-email.mjs +0 -22
  683. package/dist/treeshaking/_virtual/icon-email2.mjs +0 -21
  684. package/dist/treeshaking/_virtual/icon-event.mjs +0 -21
  685. package/dist/treeshaking/_virtual/icon-events.mjs +0 -31
  686. package/dist/treeshaking/_virtual/icon-expand.mjs +0 -21
  687. package/dist/treeshaking/_virtual/icon-eye-off.mjs +0 -20
  688. package/dist/treeshaking/_virtual/icon-eye.mjs +0 -20
  689. package/dist/treeshaking/_virtual/icon-forum.mjs +0 -21
  690. package/dist/treeshaking/_virtual/icon-gitcode-new.mjs +0 -30
  691. package/dist/treeshaking/_virtual/icon-gitee.mjs +0 -20
  692. package/dist/treeshaking/_virtual/icon-gitee2.mjs +0 -20
  693. package/dist/treeshaking/_virtual/icon-github.mjs +0 -20
  694. package/dist/treeshaking/_virtual/icon-header-back.mjs +0 -20
  695. package/dist/treeshaking/_virtual/icon-header-menu.mjs +0 -20
  696. package/dist/treeshaking/_virtual/icon-header-search.mjs +0 -20
  697. package/dist/treeshaking/_virtual/icon-help.mjs +0 -21
  698. package/dist/treeshaking/_virtual/icon-image-upload.mjs +0 -20
  699. package/dist/treeshaking/_virtual/icon-image-zoomin.mjs +0 -20
  700. package/dist/treeshaking/_virtual/icon-like.mjs +0 -20
  701. package/dist/treeshaking/_virtual/icon-link.mjs +0 -31
  702. package/dist/treeshaking/_virtual/icon-loading.mjs +0 -24
  703. package/dist/treeshaking/_virtual/icon-locale.mjs +0 -20
  704. package/dist/treeshaking/_virtual/icon-mail.mjs +0 -17
  705. package/dist/treeshaking/_virtual/icon-material.mjs +0 -21
  706. package/dist/treeshaking/_virtual/icon-meet.mjs +0 -20
  707. package/dist/treeshaking/_virtual/icon-menu-fold.mjs +0 -20
  708. package/dist/treeshaking/_virtual/icon-menu-unfold.mjs +0 -20
  709. package/dist/treeshaking/_virtual/icon-minus-dark.mjs +0 -74
  710. package/dist/treeshaking/_virtual/icon-minus-new.mjs +0 -17
  711. package/dist/treeshaking/_virtual/icon-moon.mjs +0 -20
  712. package/dist/treeshaking/_virtual/icon-more.mjs +0 -19
  713. package/dist/treeshaking/_virtual/icon-next.mjs +0 -23
  714. package/dist/treeshaking/_virtual/icon-notice.mjs +0 -20
  715. package/dist/treeshaking/_virtual/icon-openatom.mjs +0 -21
  716. package/dist/treeshaking/_virtual/icon-outlink.mjs +0 -20
  717. package/dist/treeshaking/_virtual/icon-phone.mjs +0 -22
  718. package/dist/treeshaking/_virtual/icon-playing.mjs +0 -33
  719. package/dist/treeshaking/_virtual/icon-refresh.mjs +0 -21
  720. package/dist/treeshaking/_virtual/icon-refresh2.mjs +0 -45
  721. package/dist/treeshaking/_virtual/icon-relative-search.mjs +0 -21
  722. package/dist/treeshaking/_virtual/icon-release.mjs +0 -31
  723. package/dist/treeshaking/_virtual/icon-search.mjs +0 -17
  724. package/dist/treeshaking/_virtual/icon-search2.mjs +0 -17
  725. package/dist/treeshaking/_virtual/icon-setting.mjs +0 -20
  726. package/dist/treeshaking/_virtual/icon-smile.mjs +0 -21
  727. package/dist/treeshaking/_virtual/icon-speaker.mjs +0 -17
  728. package/dist/treeshaking/_virtual/icon-star.mjs +0 -20
  729. package/dist/treeshaking/_virtual/icon-summit.mjs +0 -21
  730. package/dist/treeshaking/_virtual/icon-summit2.mjs +0 -31
  731. package/dist/treeshaking/_virtual/icon-sun.mjs +0 -20
  732. package/dist/treeshaking/_virtual/icon-time.mjs +0 -20
  733. package/dist/treeshaking/_virtual/icon-tip.mjs +0 -21
  734. package/dist/treeshaking/_virtual/icon-tips.mjs +0 -17
  735. package/dist/treeshaking/_virtual/icon-tips2.mjs +0 -28
  736. package/dist/treeshaking/_virtual/icon-unexpand.mjs +0 -22
  737. package/dist/treeshaking/_virtual/icon-unlike.mjs +0 -20
  738. package/dist/treeshaking/_virtual/icon-user.mjs +0 -17
  739. package/dist/treeshaking/_virtual/icon-video.mjs +0 -28
  740. package/dist/treeshaking/_virtual/icon-wechat.mjs +0 -18
  741. package/dist/treeshaking/_virtual/icon-working.mjs +0 -17
  742. package/dist/treeshaking/_virtual/mux.js/lib/tools/parse-sidx.js2.mjs +0 -45
  743. package/dist/treeshaking/_virtual/mux.js/lib/utils/clock.js2.mjs +0 -42
  744. package/dist/treeshaking/_virtual/sig-space.mjs +0 -20
  745. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js2.mjs +0 -37
  746. package/dist/treeshaking/_virtual/videojs-vtt.js/lib/browser-index.js3.mjs +0 -4
  747. package/dist/treeshaking/assets/meeting/empty.png.mjs +0 -4
  748. package/dist/treeshaking/assets/meeting/transparent.png.mjs +0 -4
  749. package/dist/treeshaking/assets/search/search-empty.png.mjs +0 -4
  750. package/dist/treeshaking/assets/svg-icons/icon-zoom.svg.mjs +0 -4
  751. package/dist/treeshaking/assets/user-center/images/avatar.png.mjs +0 -4
  752. package/dist/treeshaking/assets/user-center/images/default-user-photo.png.mjs +0 -4
  753. package/dist/treeshaking/assets/user-center/images/left-arrow-dark.svg.mjs +0 -4
  754. package/dist/treeshaking/assets/user-center/images/left-arrow-light.svg.mjs +0 -4
  755. package/dist/treeshaking/assets/user-center/images/noData.svg.mjs +0 -4
  756. package/dist/treeshaking/assets/user-center/images/warning-dark.svg.mjs +0 -4
  757. package/dist/treeshaking/assets/user-center/images/warning-light.svg.mjs +0 -4
  758. package/dist/treeshaking/components/activity/OActivityApproval.vue.mjs +0 -672
  759. package/dist/treeshaking/components/activity/OActivityApproval.vue4.mjs +0 -6
  760. package/dist/treeshaking/components/activity/OActivityForm.css +0 -364
  761. package/dist/treeshaking/components/activity/OActivityForm.vue.mjs +0 -628
  762. package/dist/treeshaking/components/activity/OActivityForm.vue4.mjs +0 -6
  763. package/dist/treeshaking/components/activity/OActivityForm2.css +0 -327
  764. package/dist/treeshaking/components/activity/OActivityMyCalendar.css +0 -1375
  765. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue.mjs +0 -861
  766. package/dist/treeshaking/components/activity/OActivityMyCalendar.vue4.mjs +0 -6
  767. package/dist/treeshaking/components/activity/OActivityMyCalendar2.css +0 -318
  768. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue.mjs +0 -7
  769. package/dist/treeshaking/components/anchor-bar/OAnchorBar.vue2.mjs +0 -103
  770. package/dist/treeshaking/components/article/OArticle.vue.mjs +0 -7
  771. package/dist/treeshaking/components/article/OArticle.vue2.mjs +0 -102
  772. package/dist/treeshaking/components/article/OArticleList.css +0 -253
  773. package/dist/treeshaking/components/article/OArticleList.vue.mjs +0 -219
  774. package/dist/treeshaking/components/article/OArticleList.vue3.mjs +0 -5
  775. package/dist/treeshaking/components/article/components/ArticleTitle.vue.mjs +0 -7
  776. package/dist/treeshaking/components/article/components/ArticleTitle.vue2.mjs +0 -97
  777. package/dist/treeshaking/components/article/components/DocTitle.vue.mjs +0 -7
  778. package/dist/treeshaking/components/article/components/DocTitle.vue2.mjs +0 -310
  779. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue.mjs +0 -7
  780. package/dist/treeshaking/components/article-anchor/OArticleAnchor.vue2.mjs +0 -303
  781. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue.mjs +0 -7
  782. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorItems.vue2.mjs +0 -36
  783. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.css +0 -47
  784. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue.mjs +0 -7
  785. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorMobile.vue2.mjs +0 -182
  786. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.css +0 -80
  787. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue.mjs +0 -7
  788. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPad.vue2.mjs +0 -78
  789. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue.mjs +0 -7
  790. package/dist/treeshaking/components/article-anchor/components/ArticleAnchorPc.vue2.mjs +0 -38
  791. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue.mjs +0 -7
  792. package/dist/treeshaking/components/article-pagination/OArticlePagination.vue2.mjs +0 -107
  793. package/dist/treeshaking/components/banner/OBanner.vue.mjs +0 -8
  794. package/dist/treeshaking/components/banner/OBanner.vue2.mjs +0 -142
  795. package/dist/treeshaking/components/banner/OBannerContent.vue.mjs +0 -7
  796. package/dist/treeshaking/components/banner/OBannerContent.vue2.mjs +0 -102
  797. package/dist/treeshaking/components/brand/OBrandFile.vue.mjs +0 -7
  798. package/dist/treeshaking/components/brand/OBrandFile.vue2.mjs +0 -70
  799. package/dist/treeshaking/components/brand/OBrandLogo.vue.mjs +0 -8
  800. package/dist/treeshaking/components/brand/OBrandLogo.vue2.mjs +0 -120
  801. package/dist/treeshaking/components/brand/OBrandStandard.vue.mjs +0 -7
  802. package/dist/treeshaking/components/brand/OBrandStandard.vue2.mjs +0 -59
  803. package/dist/treeshaking/components/common/AppAvatar.vue.mjs +0 -7
  804. package/dist/treeshaking/components/common/AppAvatar.vue2.mjs +0 -83
  805. package/dist/treeshaking/components/common/ClientOnly.vue.mjs +0 -16
  806. package/dist/treeshaking/components/common/ClientOnly.vue2.mjs +0 -4
  807. package/dist/treeshaking/components/common/ContentWrapper.vue.mjs +0 -7
  808. package/dist/treeshaking/components/common/ContentWrapper.vue2.mjs +0 -50
  809. package/dist/treeshaking/components/common/TooltipText.vue.mjs +0 -105
  810. package/dist/treeshaking/components/common/TooltipText.vue3.mjs +0 -5
  811. package/dist/treeshaking/components/common/WordAvatar.vue.mjs +0 -84
  812. package/dist/treeshaking/components/common/WordAvatar.vue3.mjs +0 -5
  813. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue.mjs +0 -35
  814. package/dist/treeshaking/components/config-provider/OPlusConfigProvider.vue2.mjs +0 -4
  815. package/dist/treeshaking/components/cookie-notice/OCookieNotice.css +0 -35
  816. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue.mjs +0 -8
  817. package/dist/treeshaking/components/cookie-notice/OCookieNotice.vue2.mjs +0 -367
  818. package/dist/treeshaking/components/cookie-notice/OCookieNotice2.css +0 -309
  819. package/dist/treeshaking/components/doc-layout/ODocLayout.css +0 -286
  820. package/dist/treeshaking/components/doc-layout/ODocLayout.vue.mjs +0 -7
  821. package/dist/treeshaking/components/doc-layout/ODocLayout.vue2.mjs +0 -179
  822. package/dist/treeshaking/components/element-plus/OElCookieNotice.css +0 -303
  823. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue.mjs +0 -8
  824. package/dist/treeshaking/components/element-plus/OElCookieNotice.vue2.mjs +0 -384
  825. package/dist/treeshaking/components/element-plus/OElCookieNotice2.css +0 -688
  826. package/dist/treeshaking/components/empty/404.png.mjs +0 -4
  827. package/dist/treeshaking/components/empty/404_dark.png.mjs +0 -4
  828. package/dist/treeshaking/components/empty/OEmpty.vue.mjs +0 -7
  829. package/dist/treeshaking/components/empty/OEmpty.vue2.mjs +0 -44
  830. package/dist/treeshaking/components/events/OEventsApply.vue.mjs +0 -98
  831. package/dist/treeshaking/components/events/OEventsApply.vue3.mjs +0 -5
  832. package/dist/treeshaking/components/events/OEventsCalendar.vue.mjs +0 -289
  833. package/dist/treeshaking/components/events/OEventsCalendar.vue3.mjs +0 -5
  834. package/dist/treeshaking/components/events/OEventsList.vue.mjs +0 -237
  835. package/dist/treeshaking/components/events/OEventsList.vue3.mjs +0 -5
  836. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue.mjs +0 -7
  837. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue2.mjs +0 -165
  838. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue.mjs +0 -7
  839. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue2.mjs +0 -309
  840. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue.mjs +0 -99
  841. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue2.mjs +0 -4
  842. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue.mjs +0 -7
  843. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue2.mjs +0 -95
  844. package/dist/treeshaking/components/float-poster/OFloatPoster.vue.mjs +0 -7
  845. package/dist/treeshaking/components/float-poster/OFloatPoster.vue2.mjs +0 -84
  846. package/dist/treeshaking/components/footer/OFooter.vue.mjs +0 -7
  847. package/dist/treeshaking/components/footer/OFooter.vue2.mjs +0 -92
  848. package/dist/treeshaking/components/footer/components/FooterList.vue.mjs +0 -7
  849. package/dist/treeshaking/components/footer/components/FooterList.vue2.mjs +0 -214
  850. package/dist/treeshaking/components/footer/components/FooterSimple.vue.mjs +0 -7
  851. package/dist/treeshaking/components/footer/components/FooterSimple.vue2.mjs +0 -126
  852. package/dist/treeshaking/components/header/OHeader.vue.mjs +0 -7
  853. package/dist/treeshaking/components/header/OHeader.vue2.mjs +0 -272
  854. package/dist/treeshaking/components/header/OHeaderMobile.vue.mjs +0 -7
  855. package/dist/treeshaking/components/header/OHeaderMobile.vue2.mjs +0 -145
  856. package/dist/treeshaking/components/header/components/HeaderContent.vue.mjs +0 -7
  857. package/dist/treeshaking/components/header/components/HeaderContent.vue2.mjs +0 -371
  858. package/dist/treeshaking/components/header/components/HeaderFlatten.vue.mjs +0 -7
  859. package/dist/treeshaking/components/header/components/HeaderFlatten.vue2.mjs +0 -288
  860. package/dist/treeshaking/components/header/components/HeaderNav.vue.mjs +0 -7
  861. package/dist/treeshaking/components/header/components/HeaderNav.vue2.mjs +0 -244
  862. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue.mjs +0 -7
  863. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue2.mjs +0 -253
  864. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue.mjs +0 -8
  865. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue2.mjs +0 -129
  866. package/dist/treeshaking/components/header-search/OHeaderSearch.vue.mjs +0 -7
  867. package/dist/treeshaking/components/header-search/OHeaderSearch.vue2.mjs +0 -436
  868. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue.mjs +0 -7
  869. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue2.mjs +0 -89
  870. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue.mjs +0 -7
  871. package/dist/treeshaking/components/header-theme/OHeaderTheme.vue2.mjs +0 -86
  872. package/dist/treeshaking/components/header-user/OHeaderUser.vue.mjs +0 -8
  873. package/dist/treeshaking/components/header-user/OHeaderUser.vue2.mjs +0 -161
  874. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue.mjs +0 -7
  875. package/dist/treeshaking/components/html-viewer/OHtmlViewer.vue2.mjs +0 -117
  876. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue.mjs +0 -7
  877. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue2.mjs +0 -21
  878. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue.mjs +0 -7
  879. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue2.mjs +0 -164
  880. package/dist/treeshaking/components/markdown/OMarkdown.vue.mjs +0 -8
  881. package/dist/treeshaking/components/markdown/OMarkdown.vue2.mjs +0 -195
  882. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue.mjs +0 -8
  883. package/dist/treeshaking/components/markdown/components/MarkdownCode.vue2.mjs +0 -127
  884. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue.mjs +0 -7
  885. package/dist/treeshaking/components/markdown/components/MarkdownImage.vue2.mjs +0 -76
  886. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue.mjs +0 -7
  887. package/dist/treeshaking/components/markdown/components/MarkdownTable.vue2.mjs +0 -59
  888. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue.mjs +0 -7
  889. package/dist/treeshaking/components/markdown/components/MarkdownTableData.vue2.mjs +0 -181
  890. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue.mjs +0 -7
  891. package/dist/treeshaking/components/markdown/components/MarkdownTableExpand.vue2.mjs +0 -57
  892. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue.mjs +0 -7
  893. package/dist/treeshaking/components/markdown/components/MarkdownTitle.vue2.mjs +0 -75
  894. package/dist/treeshaking/components/meeting/OMeetingCalendar.css +0 -1100
  895. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue.mjs +0 -597
  896. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue3.mjs +0 -5
  897. package/dist/treeshaking/components/meeting/OMeetingForm.css +0 -765
  898. package/dist/treeshaking/components/meeting/OMeetingForm.vue.mjs +0 -1081
  899. package/dist/treeshaking/components/meeting/OMeetingForm.vue4.mjs +0 -6
  900. package/dist/treeshaking/components/meeting/OMeetingForm2.css +0 -358
  901. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue.mjs +0 -415
  902. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue3.mjs +0 -5
  903. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue.mjs +0 -7
  904. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue2.mjs +0 -74
  905. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.css +0 -1344
  906. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue.mjs +0 -931
  907. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.vue4.mjs +0 -6
  908. package/dist/treeshaking/components/meeting/OMeetingMyCalendar2.css +0 -330
  909. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue.mjs +0 -406
  910. package/dist/treeshaking/components/meeting/OMeetingPlayback.vue3.mjs +0 -5
  911. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue.mjs +0 -221
  912. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue3.mjs +0 -5
  913. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue.mjs +0 -396
  914. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue3.mjs +0 -5
  915. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue.mjs +0 -422
  916. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue3.mjs +0 -5
  917. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.css +0 -379
  918. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue.mjs +0 -132
  919. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.vue4.mjs +0 -6
  920. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector2.css +0 -343
  921. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue.mjs +0 -194
  922. package/dist/treeshaking/components/meeting/components/OMeetingDetail.vue3.mjs +0 -5
  923. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.css +0 -743
  924. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue.mjs +0 -434
  925. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue4.mjs +0 -6
  926. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles2.css +0 -344
  927. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue.mjs +0 -242
  928. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackVideo.vue3.mjs +0 -5
  929. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue.mjs +0 -7
  930. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue2.mjs +0 -93
  931. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue.mjs +0 -152
  932. package/dist/treeshaking/components/meeting/components/OMeetingSigAside.vue3.mjs +0 -5
  933. package/dist/treeshaking/components/org/OOrgDesc.vue.mjs +0 -7
  934. package/dist/treeshaking/components/org/OOrgDesc.vue2.mjs +0 -40
  935. package/dist/treeshaking/components/org/OOrgMembers.vue.mjs +0 -7
  936. package/dist/treeshaking/components/org/OOrgMembers.vue2.mjs +0 -108
  937. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue.mjs +0 -95
  938. package/dist/treeshaking/components/recursion-menu/ORecursionMenu.vue2.mjs +0 -4
  939. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue.mjs +0 -7
  940. package/dist/treeshaking/components/recursion-menu/ORecursionMenuItem.vue2.mjs +0 -107
  941. package/dist/treeshaking/components/search/OSearchInput.vue.mjs +0 -7
  942. package/dist/treeshaking/components/search/OSearchInput.vue2.mjs +0 -382
  943. package/dist/treeshaking/components/search/internal/HighlightText.vue.mjs +0 -7
  944. package/dist/treeshaking/components/search/internal/HighlightText.vue2.mjs +0 -33
  945. package/dist/treeshaking/components/search/internal/SearchImageInput.vue.mjs +0 -8
  946. package/dist/treeshaking/components/search/internal/SearchImageInput.vue2.mjs +0 -305
  947. package/dist/treeshaking/components/search/internal/SearchPanel.vue.mjs +0 -7
  948. package/dist/treeshaking/components/search/internal/SearchPanel.vue2.mjs +0 -255
  949. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.css +0 -156
  950. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue.mjs +0 -7
  951. package/dist/treeshaking/components/search-doc-result/OSearchDocResult.vue2.mjs +0 -214
  952. package/dist/treeshaking/components/search-result/OSearchResult.css +0 -165
  953. package/dist/treeshaking/components/search-result/OSearchResult.vue.mjs +0 -7
  954. package/dist/treeshaking/components/search-result/OSearchResult.vue2.mjs +0 -185
  955. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue.mjs +0 -7
  956. package/dist/treeshaking/components/search-result/OSearchResultHeader.vue2.mjs +0 -112
  957. package/dist/treeshaking/components/search-result/OSearchResultItem.vue.mjs +0 -7
  958. package/dist/treeshaking/components/search-result/OSearchResultItem.vue2.mjs +0 -118
  959. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue.mjs +0 -7
  960. package/dist/treeshaking/components/search-result/components/OSearchResultEmpty.vue2.mjs +0 -29
  961. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue.mjs +0 -7
  962. package/dist/treeshaking/components/search-result/components/OSearchResultFeedback.vue2.mjs +0 -171
  963. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue.mjs +0 -7
  964. package/dist/treeshaking/components/search-result/components/OSearchResultFeedbackBanner.vue2.mjs +0 -185
  965. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue.mjs +0 -7
  966. package/dist/treeshaking/components/search-result/components/OSearchResultRelative.vue2.mjs +0 -55
  967. package/dist/treeshaking/components/section/OSection.vue.mjs +0 -7
  968. package/dist/treeshaking/components/section/OSection.vue2.mjs +0 -93
  969. package/dist/treeshaking/components/sig/OSigDetail.vue.mjs +0 -262
  970. package/dist/treeshaking/components/sig/OSigDetail.vue3.mjs +0 -5
  971. package/dist/treeshaking/components/sig/OSigList.css +0 -845
  972. package/dist/treeshaking/components/sig/OSigList.vue.mjs +0 -524
  973. package/dist/treeshaking/components/sig/OSigList.vue3.mjs +0 -5
  974. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue.mjs +0 -90
  975. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue3.mjs +0 -5
  976. package/dist/treeshaking/components/sig/components/OSigItem.vue.mjs +0 -212
  977. package/dist/treeshaking/components/sig/components/OSigItem.vue3.mjs +0 -5
  978. package/dist/treeshaking/components/sig/components/OSigMember.vue.mjs +0 -274
  979. package/dist/treeshaking/components/sig/components/OSigMember.vue3.mjs +0 -5
  980. package/dist/treeshaking/components/sig/components/OSigRepo.vue.mjs +0 -191
  981. package/dist/treeshaking/components/sig/components/OSigRepo.vue3.mjs +0 -5
  982. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue.mjs +0 -328
  983. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue3.mjs +0 -5
  984. package/dist/treeshaking/components/summit/OSummit.vue.mjs +0 -7
  985. package/dist/treeshaking/components/summit/OSummit.vue2.mjs +0 -60
  986. package/dist/treeshaking/components/summit/OSummitIntro.vue.mjs +0 -7
  987. package/dist/treeshaking/components/summit/OSummitIntro.vue2.mjs +0 -26
  988. package/dist/treeshaking/components/summit/OSummitLive.vue.mjs +0 -7
  989. package/dist/treeshaking/components/summit/OSummitLive.vue2.mjs +0 -171
  990. package/dist/treeshaking/components/summit/OSummitSchedule.vue.mjs +0 -8
  991. package/dist/treeshaking/components/summit/OSummitSchedule.vue2.mjs +0 -317
  992. package/dist/treeshaking/components/summit/components/OSummitTabs.vue.mjs +0 -7
  993. package/dist/treeshaking/components/summit/components/OSummitTabs.vue2.mjs +0 -157
  994. package/dist/treeshaking/components/user-center/OAccountSecurity.css +0 -253
  995. package/dist/treeshaking/components/user-center/OAccountSecurity.vue.mjs +0 -7
  996. package/dist/treeshaking/components/user-center/OAccountSecurity.vue2.mjs +0 -308
  997. package/dist/treeshaking/components/user-center/OAccountSetting.css +0 -284
  998. package/dist/treeshaking/components/user-center/OAccountSetting.vue.mjs +0 -7
  999. package/dist/treeshaking/components/user-center/OAccountSetting.vue2.mjs +0 -395
  1000. package/dist/treeshaking/components/user-center/OAppHeader.vue.mjs +0 -7
  1001. package/dist/treeshaking/components/user-center/OAppHeader.vue2.mjs +0 -207
  1002. package/dist/treeshaking/components/user-center/OAsideBar.vue.mjs +0 -7
  1003. package/dist/treeshaking/components/user-center/OAsideBar.vue2.mjs +0 -108
  1004. package/dist/treeshaking/components/user-center/OLayout.vue.mjs +0 -7
  1005. package/dist/treeshaking/components/user-center/OLayout.vue2.mjs +0 -27
  1006. package/dist/treeshaking/components/user-center/OTheAccountManage.vue.mjs +0 -7
  1007. package/dist/treeshaking/components/user-center/OTheAccountManage.vue2.mjs +0 -26
  1008. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue.mjs +0 -7
  1009. package/dist/treeshaking/components/user-center/OTheCreateMeeting.vue2.mjs +0 -103
  1010. package/dist/treeshaking/components/user-center/OTheMeeting.vue.mjs +0 -7
  1011. package/dist/treeshaking/components/user-center/OTheMeeting.vue2.mjs +0 -128
  1012. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue.mjs +0 -7
  1013. package/dist/treeshaking/components/user-center/OThirdPartyBindings.vue2.mjs +0 -388
  1014. package/dist/treeshaking/components/user-center/OUserInfo.vue.mjs +0 -9
  1015. package/dist/treeshaking/components/user-center/OUserInfo.vue2.mjs +0 -562
  1016. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue.mjs +0 -7
  1017. package/dist/treeshaking/components/user-center/internal/OAppDialog.vue2.mjs +0 -446
  1018. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue.mjs +0 -7
  1019. package/dist/treeshaking/components/user-center/internal/OAppEmpty.vue2.mjs +0 -41
  1020. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue.mjs +0 -7
  1021. package/dist/treeshaking/components/user-center/internal/OCommonHeader.vue2.mjs +0 -148
  1022. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue.mjs +0 -67
  1023. package/dist/treeshaking/components/user-center/internal/OCountdownButton.vue2.mjs +0 -4
  1024. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue.mjs +0 -8
  1025. package/dist/treeshaking/components/user-center/internal/ODeleteAccountModal.vue2.mjs +0 -325
  1026. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue.mjs +0 -8
  1027. package/dist/treeshaking/components/user-center/internal/OEditNicknameDialog.vue2.mjs +0 -149
  1028. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue.mjs +0 -8
  1029. package/dist/treeshaking/components/user-center/internal/OEditOrgDialog.vue2.mjs +0 -162
  1030. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue.mjs +0 -7
  1031. package/dist/treeshaking/components/user-center/internal/OMaskEye.vue2.mjs +0 -30
  1032. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue.mjs +0 -7
  1033. package/dist/treeshaking/components/user-center/internal/OModifyPwd.vue2.mjs +0 -461
  1034. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue.mjs +0 -7
  1035. package/dist/treeshaking/components/user-center/internal/OPasswordPopInput.vue2.mjs +0 -147
  1036. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue.mjs +0 -7
  1037. package/dist/treeshaking/components/user-center/internal/OToBindingTipModal.vue2.mjs +0 -117
  1038. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue.mjs +0 -7
  1039. package/dist/treeshaking/components/user-center/internal/OUnbindingThirdpartyAccountModal.vue2.mjs +0 -107
  1040. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.css +0 -525
  1041. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue.mjs +0 -8
  1042. package/dist/treeshaking/components/user-center/internal/OUploadAvatar.vue2.mjs +0 -455
  1043. package/dist/treeshaking/components/user-center/internal/OUploadAvatar2.css +0 -304
  1044. package/dist/treeshaking/components/user-center/verify/Verify.vue.mjs +0 -61
  1045. package/dist/treeshaking/components/user-center/verify/Verify.vue2.mjs +0 -83
  1046. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue.mjs +0 -122
  1047. package/dist/treeshaking/components/user-center/verify/VerifySlide.vue2.mjs +0 -367
  1048. package/dist/treeshaking/components/video/OVideoDetail.vue.mjs +0 -318
  1049. package/dist/treeshaking/components/video/OVideoDetail.vue3.mjs +0 -5
  1050. /package/dist/treeshaking/components/activity/{OActivityApproval.css → OActivityApproval.vue_vue_type_style_index_0_lang.css} +0 -0
  1051. /package/dist/treeshaking/components/activity/{OActivityApproval2.css → OActivityApproval.vue_vue_type_style_index_1_lang.css} +0 -0
  1052. /package/dist/treeshaking/components/anchor-bar/{OAnchorBar.css → OAnchorBar.vue_vue_type_style_index_0_scoped_f662dd83_lang.css} +0 -0
  1053. /package/dist/treeshaking/components/article/{OArticle.css → OArticle.vue_vue_type_style_index_0_scoped_f94c0e57_lang.css} +0 -0
  1054. /package/dist/treeshaking/components/article/components/{ArticleTitle.css → ArticleTitle.vue_vue_type_style_index_0_scoped_b96d293f_lang.css} +0 -0
  1055. /package/dist/treeshaking/components/article/components/{DocTitle.css → DocTitle.vue_vue_type_style_index_0_scoped_12467c9f_lang.css} +0 -0
  1056. /package/dist/treeshaking/components/article-anchor/{OArticleAnchor.css → OArticleAnchor.vue_vue_type_style_index_0_scoped_dcc5e0d5_lang.css} +0 -0
  1057. /package/dist/treeshaking/components/article-anchor/components/{ArticleAnchorItems.css → ArticleAnchorItems.vue_vue_type_style_index_0_scoped_126e1824_lang.css} +0 -0
  1058. /package/dist/treeshaking/components/article-anchor/components/{ArticleAnchorPc.css → ArticleAnchorPc.vue_vue_type_style_index_0_scoped_a480e4e7_lang.css} +0 -0
  1059. /package/dist/treeshaking/components/article-pagination/{OArticlePagination.css → OArticlePagination.vue_vue_type_style_index_0_scoped_8a8cf9f8_lang.css} +0 -0
  1060. /package/dist/treeshaking/components/banner/{OBanner.css → OBanner.vue_vue_type_style_index_0_scoped_8cfcc7ff_lang.css} +0 -0
  1061. /package/dist/treeshaking/components/banner/{OBanner2.css → OBanner.vue_vue_type_style_index_1_scoped_8cfcc7ff_lang.css} +0 -0
  1062. /package/dist/treeshaking/components/banner/{OBannerContent.css → OBannerContent.vue_vue_type_style_index_0_scoped_1904d05a_lang.css} +0 -0
  1063. /package/dist/treeshaking/components/brand/{OBrandFile.css → OBrandFile.vue_vue_type_style_index_0_scoped_9919f662_lang.css} +0 -0
  1064. /package/dist/treeshaking/components/brand/{OBrandLogo.css → OBrandLogo.vue_vue_type_style_index_0_scoped_6b4fb6c1_lang.css} +0 -0
  1065. /package/dist/treeshaking/components/brand/{OBrandLogo2.css → OBrandLogo.vue_vue_type_style_index_1_lang.css} +0 -0
  1066. /package/dist/treeshaking/components/brand/{OBrandStandard.css → OBrandStandard.vue_vue_type_style_index_0_scoped_a9afbc57_lang.css} +0 -0
  1067. /package/dist/treeshaking/components/common/{AppAvatar.css → AppAvatar.vue_vue_type_style_index_0_scoped_9aaf13f3_lang.css} +0 -0
  1068. /package/dist/treeshaking/components/common/{ContentWrapper.css → ContentWrapper.vue_vue_type_style_index_0_scoped_9e217f8f_lang.css} +0 -0
  1069. /package/dist/treeshaking/components/common/{TooltipText.css → TooltipText.vue_vue_type_style_index_0_lang.css} +0 -0
  1070. /package/dist/treeshaking/components/common/{WordAvatar.css → WordAvatar.vue_vue_type_style_index_0_lang.css} +0 -0
  1071. /package/dist/treeshaking/components/empty/{OEmpty.css → OEmpty.vue_vue_type_style_index_0_scoped_4381b83c_lang.css} +0 -0
  1072. /package/dist/treeshaking/components/events/{OEventsApply.css → OEventsApply.vue_vue_type_style_index_0_lang.css} +0 -0
  1073. /package/dist/treeshaking/components/events/{OEventsCalendar.css → OEventsCalendar.vue_vue_type_style_index_0_lang.css} +0 -0
  1074. /package/dist/treeshaking/components/events/{OEventsList.css → OEventsList.vue_vue_type_style_index_0_lang.css} +0 -0
  1075. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDoc.css → OFeedbackDoc.vue_vue_type_style_index_0_scoped_a8f7d8ef_lang.css} +0 -0
  1076. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDocContent.css → OFeedbackDocContent.vue_vue_type_style_index_0_scoped_994ce5c5_lang.css} +0 -0
  1077. /package/dist/treeshaking/components/feedback-doc/{OFeedbackDocPopup.css → OFeedbackDocPopup.vue_vue_type_style_index_0_scoped_61cd944c_lang.css} +0 -0
  1078. /package/dist/treeshaking/components/float-poster/{OFloatPoster.css → OFloatPoster.vue_vue_type_style_index_0_scoped_e67cdd62_lang.css} +0 -0
  1079. /package/dist/treeshaking/components/footer/{OFooter.css → OFooter.vue_vue_type_style_index_0_scoped_41010b1f_lang.css} +0 -0
  1080. /package/dist/treeshaking/components/footer/components/{FooterList.css → FooterList.vue_vue_type_style_index_0_scoped_1d7a4555_lang.css} +0 -0
  1081. /package/dist/treeshaking/components/footer/components/{FooterSimple.css → FooterSimple.vue_vue_type_style_index_0_scoped_bb36ddad_lang.css} +0 -0
  1082. /package/dist/treeshaking/components/header/{OHeader.css → OHeader.vue_vue_type_style_index_0_scoped_c1620a61_lang.css} +0 -0
  1083. /package/dist/treeshaking/components/header/{OHeaderMobile.css → OHeaderMobile.vue_vue_type_style_index_0_scoped_0a2d44bb_lang.css} +0 -0
  1084. /package/dist/treeshaking/components/header/components/{HeaderContent.css → HeaderContent.vue_vue_type_style_index_0_scoped_366a2b01_lang.css} +0 -0
  1085. /package/dist/treeshaking/components/header/components/{HeaderFlatten.css → HeaderFlatten.vue_vue_type_style_index_0_scoped_edcea052_lang.css} +0 -0
  1086. /package/dist/treeshaking/components/header/components/{HeaderNav.css → HeaderNav.vue_vue_type_style_index_0_scoped_01bf1a8c_lang.css} +0 -0
  1087. /package/dist/treeshaking/components/header/components/{HeaderNavMobile.css → HeaderNavMobile.vue_vue_type_style_index_0_scoped_5c72051b_lang.css} +0 -0
  1088. /package/dist/treeshaking/components/header-language-switcher/{OHeaderLanguageSwitcher.css → OHeaderLanguageSwitcher.vue_vue_type_style_index_0_scoped_423f1b29_lang.css} +0 -0
  1089. /package/dist/treeshaking/components/header-language-switcher/{OHeaderLanguageSwitcher2.css → OHeaderLanguageSwitcher.vue_vue_type_style_index_1_lang.css} +0 -0
  1090. /package/dist/treeshaking/components/header-search/{OHeaderSearch.css → OHeaderSearch.vue_vue_type_style_index_0_scoped_bf46f1ee_lang.css} +0 -0
  1091. /package/dist/treeshaking/components/header-source-code/{OHeaderSourceCode.css → OHeaderSourceCode.vue_vue_type_style_index_0_scoped_4c72b8c0_lang.css} +0 -0
  1092. /package/dist/treeshaking/components/header-theme/{OHeaderTheme.css → OHeaderTheme.vue_vue_type_style_index_0_scoped_a8461f7a_lang.css} +0 -0
  1093. /package/dist/treeshaking/components/header-user/{OHeaderUser.css → OHeaderUser.vue_vue_type_style_index_0_scoped_01df49a0_lang.css} +0 -0
  1094. /package/dist/treeshaking/components/header-user/{OHeaderUser2.css → OHeaderUser.vue_vue_type_style_index_1_lang.css} +0 -0
  1095. /package/dist/treeshaking/components/html-viewer/{OHtmlViewer.css → OHtmlViewer.vue_vue_type_style_index_0_scoped_2f5d08df_lang.css} +0 -0
  1096. /package/dist/treeshaking/components/logo-swiper/{OLogoSwiper.css → OLogoSwiper.vue_vue_type_style_index_0_scoped_6c8c87fc_lang.css} +0 -0
  1097. /package/dist/treeshaking/components/logo-swiper/{OLogoSwiperItems.css → OLogoSwiperItems.vue_vue_type_style_index_0_scoped_2d960cc9_lang.css} +0 -0
  1098. /package/dist/treeshaking/components/markdown/{OMarkdown.css → OMarkdown.vue_vue_type_style_index_0_lang.css} +0 -0
  1099. /package/dist/treeshaking/components/markdown/{OMarkdown2.css → OMarkdown.vue_vue_type_style_index_1_scoped_c19788db_lang.css} +0 -0
  1100. /package/dist/treeshaking/components/markdown/components/{MarkdownCode.css → MarkdownCode.vue_vue_type_style_index_0_lang.css} +0 -0
  1101. /package/dist/treeshaking/components/markdown/components/{MarkdownCode2.css → MarkdownCode.vue_vue_type_style_index_1_scoped_8895ed58_lang.css} +0 -0
  1102. /package/dist/treeshaking/components/markdown/components/{MarkdownImage.css → MarkdownImage.vue_vue_type_style_index_0_scoped_af8b0296_lang.css} +0 -0
  1103. /package/dist/treeshaking/components/markdown/components/{MarkdownTable.css → MarkdownTable.vue_vue_type_style_index_0_scoped_ce85236e_lang.css} +0 -0
  1104. /package/dist/treeshaking/components/markdown/components/{MarkdownTableData.css → MarkdownTableData.vue_vue_type_style_index_0_scoped_5f73735b_lang.css} +0 -0
  1105. /package/dist/treeshaking/components/markdown/components/{MarkdownTableExpand.css → MarkdownTableExpand.vue_vue_type_style_index_0_scoped_e625a513_lang.css} +0 -0
  1106. /package/dist/treeshaking/components/markdown/components/{MarkdownTitle.css → MarkdownTitle.vue_vue_type_style_index_0_scoped_73874b80_lang.css} +0 -0
  1107. /package/dist/treeshaking/components/meeting/{OMeetingMinutes.css → OMeetingMinutes.vue_vue_type_style_index_0_lang.css} +0 -0
  1108. /package/dist/treeshaking/components/meeting/{OMeetingMinutesCopyDetail.css → OMeetingMinutesCopyDetail.vue_vue_type_style_index_0_scoped_6e742903_lang.css} +0 -0
  1109. /package/dist/treeshaking/components/meeting/{OMeetingPlayback.css → OMeetingPlayback.vue_vue_type_style_index_0_lang.css} +0 -0
  1110. /package/dist/treeshaking/components/meeting/{OMeetingSendMinutesForm.css → OMeetingSendMinutesForm.vue_vue_type_style_index_0_lang.css} +0 -0
  1111. /package/dist/treeshaking/components/meeting/{OMeetingSigCalendar.css → OMeetingSigCalendar.vue_vue_type_style_index_0_lang.css} +0 -0
  1112. /package/dist/treeshaking/components/meeting/components/{OMeetingCalendarList.css → OMeetingCalendarList.vue_vue_type_style_index_0_lang.css} +0 -0
  1113. /package/dist/treeshaking/components/meeting/components/{OMeetingDetail.css → OMeetingDetail.vue_vue_type_style_index_0_lang.css} +0 -0
  1114. /package/dist/treeshaking/components/meeting/components/{OMeetingPlaybackVideo.css → OMeetingPlaybackVideo.vue_vue_type_style_index_0_lang.css} +0 -0
  1115. /package/dist/treeshaking/components/meeting/components/{OMeetingSendMinutesDialog.css → OMeetingSendMinutesDialog.vue_vue_type_style_index_0_scoped_1bd384f6_lang.css} +0 -0
  1116. /package/dist/treeshaking/components/meeting/components/{OMeetingSigAside.css → OMeetingSigAside.vue_vue_type_style_index_0_lang.css} +0 -0
  1117. /package/dist/treeshaking/components/org/{OOrgDesc.css → OOrgDesc.vue_vue_type_style_index_0_scoped_5a9df0b4_lang.css} +0 -0
  1118. /package/dist/treeshaking/components/org/{OOrgMembers.css → OOrgMembers.vue_vue_type_style_index_0_scoped_dc325798_lang.css} +0 -0
  1119. /package/dist/treeshaking/components/recursion-menu/{ORecursionMenuItem.css → ORecursionMenuItem.vue_vue_type_style_index_0_scoped_14237743_lang.css} +0 -0
  1120. /package/dist/treeshaking/components/search/{OSearchInput.css → OSearchInput.vue_vue_type_style_index_0_scoped_ee331b07_lang.css} +0 -0
  1121. /package/dist/treeshaking/components/search/internal/{HighlightText.css → HighlightText.vue_vue_type_style_index_0_scoped_2a99e23c_lang.css} +0 -0
  1122. /package/dist/treeshaking/components/search/internal/{SearchImageInput.css → SearchImageInput.vue_vue_type_style_index_0_scoped_4a3e5145_lang.css} +0 -0
  1123. /package/dist/treeshaking/components/search/internal/{SearchImageInput2.css → SearchImageInput.vue_vue_type_style_index_1_lang.css} +0 -0
  1124. /package/dist/treeshaking/components/search/internal/{SearchPanel.css → SearchPanel.vue_vue_type_style_index_0_scoped_a5767f01_lang.css} +0 -0
  1125. /package/dist/treeshaking/components/search-result/{OSearchResultHeader.css → OSearchResultHeader.vue_vue_type_style_index_0_scoped_70bc0c95_lang.css} +0 -0
  1126. /package/dist/treeshaking/components/search-result/{OSearchResultItem.css → OSearchResultItem.vue_vue_type_style_index_0_scoped_0914fdb7_lang.css} +0 -0
  1127. /package/dist/treeshaking/components/search-result/components/{OSearchResultEmpty.css → OSearchResultEmpty.vue_vue_type_style_index_0_scoped_da22a823_lang.css} +0 -0
  1128. /package/dist/treeshaking/components/search-result/components/{OSearchResultFeedback.css → OSearchResultFeedback.vue_vue_type_style_index_0_scoped_72958e79_lang.css} +0 -0
  1129. /package/dist/treeshaking/components/search-result/components/{OSearchResultFeedbackBanner.css → OSearchResultFeedbackBanner.vue_vue_type_style_index_0_scoped_4cd638c6_lang.css} +0 -0
  1130. /package/dist/treeshaking/components/search-result/components/{OSearchResultRelative.css → OSearchResultRelative.vue_vue_type_style_index_0_scoped_6872ff03_lang.css} +0 -0
  1131. /package/dist/treeshaking/components/section/{OSection.css → OSection.vue_vue_type_style_index_0_scoped_dae37748_lang.css} +0 -0
  1132. /package/dist/treeshaking/components/sig/{OSigDetail.css → OSigDetail.vue_vue_type_style_index_0_lang.css} +0 -0
  1133. /package/dist/treeshaking/components/sig/components/{OSigDetailInfoCard.css → OSigDetailInfoCard.vue_vue_type_style_index_0_lang.css} +0 -0
  1134. /package/dist/treeshaking/components/sig/components/{OSigItem.css → OSigItem.vue_vue_type_style_index_0_lang.css} +0 -0
  1135. /package/dist/treeshaking/components/sig/components/{OSigMember.css → OSigMember.vue_vue_type_style_index_0_lang.css} +0 -0
  1136. /package/dist/treeshaking/components/sig/components/{OSigRepo.css → OSigRepo.vue_vue_type_style_index_0_lang.css} +0 -0
  1137. /package/dist/treeshaking/components/sig/components/{OSigUserContribute.css → OSigUserContribute.vue_vue_type_style_index_0_lang.css} +0 -0
  1138. /package/dist/treeshaking/components/summit/{OSummit.css → OSummit.vue_vue_type_style_index_0_scoped_6e15ff06_lang.css} +0 -0
  1139. /package/dist/treeshaking/components/summit/{OSummitIntro.css → OSummitIntro.vue_vue_type_style_index_0_scoped_4878dd94_lang.css} +0 -0
  1140. /package/dist/treeshaking/components/summit/{OSummitLive.css → OSummitLive.vue_vue_type_style_index_0_scoped_634db517_lang.css} +0 -0
  1141. /package/dist/treeshaking/components/summit/{OSummitSchedule.css → OSummitSchedule.vue_vue_type_style_index_0_scoped_934d2319_lang.css} +0 -0
  1142. /package/dist/treeshaking/components/summit/{OSummitSchedule2.css → OSummitSchedule.vue_vue_type_style_index_1_lang.css} +0 -0
  1143. /package/dist/treeshaking/components/summit/components/{OSummitTabs.css → OSummitTabs.vue_vue_type_style_index_0_scoped_7337571d_lang.css} +0 -0
  1144. /package/dist/treeshaking/components/user-center/{OAppHeader.css → OAppHeader.vue_vue_type_style_index_0_scoped_c5aea772_lang.css} +0 -0
  1145. /package/dist/treeshaking/components/user-center/{OAsideBar.css → OAsideBar.vue_vue_type_style_index_0_scoped_52e6041d_lang.css} +0 -0
  1146. /package/dist/treeshaking/components/user-center/{OLayout.css → OLayout.vue_vue_type_style_index_0_scoped_57f2a891_lang.css} +0 -0
  1147. /package/dist/treeshaking/components/user-center/{OTheAccountManage.css → OTheAccountManage.vue_vue_type_style_index_0_scoped_77534a05_lang.css} +0 -0
  1148. /package/dist/treeshaking/components/user-center/{OTheCreateMeeting.css → OTheCreateMeeting.vue_vue_type_style_index_0_scoped_fd23cd00_lang.css} +0 -0
  1149. /package/dist/treeshaking/components/user-center/{OTheMeeting.css → OTheMeeting.vue_vue_type_style_index_0_scoped_0dd1b8dd_lang.css} +0 -0
  1150. /package/dist/treeshaking/components/user-center/{OThirdPartyBindings.css → OThirdPartyBindings.vue_vue_type_style_index_0_scoped_aae76194_lang.css} +0 -0
  1151. /package/dist/treeshaking/components/user-center/{OUserInfo.css → OUserInfo.vue_vue_type_style_index_0_scoped_c12d3f54_lang.css} +0 -0
  1152. /package/dist/treeshaking/components/user-center/{OUserInfo2.css → OUserInfo.vue_vue_type_style_index_1_lang.css} +0 -0
  1153. /package/dist/treeshaking/components/user-center/{OUserInfo3.css → OUserInfo.vue_vue_type_style_index_2_scoped_c12d3f54_lang.css} +0 -0
  1154. /package/dist/treeshaking/components/user-center/internal/{OAppDialog.css → OAppDialog.vue_vue_type_style_index_0_scoped_67324b3c_lang.css} +0 -0
  1155. /package/dist/treeshaking/components/user-center/internal/{OAppEmpty.css → OAppEmpty.vue_vue_type_style_index_0_scoped_7a03249c_lang.css} +0 -0
  1156. /package/dist/treeshaking/components/user-center/internal/{OCommonHeader.css → OCommonHeader.vue_vue_type_style_index_0_scoped_89fdfe34_lang.css} +0 -0
  1157. /package/dist/treeshaking/components/user-center/internal/{ODeleteAccountModal.css → ODeleteAccountModal.vue_vue_type_style_index_0_scoped_e8f10683_lang.css} +0 -0
  1158. /package/dist/treeshaking/components/user-center/internal/{ODeleteAccountModal2.css → ODeleteAccountModal.vue_vue_type_style_index_1_lang.css} +0 -0
  1159. /package/dist/treeshaking/components/user-center/internal/{OEditNicknameDialog.css → OEditNicknameDialog.vue_vue_type_style_index_0_scoped_31e15aff_lang.css} +0 -0
  1160. /package/dist/treeshaking/components/user-center/internal/{OEditNicknameDialog2.css → OEditNicknameDialog.vue_vue_type_style_index_1_lang.css} +0 -0
  1161. /package/dist/treeshaking/components/user-center/internal/{OEditOrgDialog.css → OEditOrgDialog.vue_vue_type_style_index_0_scoped_80d49054_lang.css} +0 -0
  1162. /package/dist/treeshaking/components/user-center/internal/{OEditOrgDialog2.css → OEditOrgDialog.vue_vue_type_style_index_1_lang.css} +0 -0
  1163. /package/dist/treeshaking/components/user-center/internal/{OMaskEye.css → OMaskEye.vue_vue_type_style_index_0_scoped_a1344e1a_lang.css} +0 -0
  1164. /package/dist/treeshaking/components/user-center/internal/{OModifyPwd.css → OModifyPwd.vue_vue_type_style_index_0_scoped_5e0452e7_lang.css} +0 -0
  1165. /package/dist/treeshaking/components/user-center/internal/{OPasswordPopInput.css → OPasswordPopInput.vue_vue_type_style_index_0_scoped_1bf14f73_lang.css} +0 -0
  1166. /package/dist/treeshaking/components/user-center/internal/{OToBindingTipModal.css → OToBindingTipModal.vue_vue_type_style_index_0_scoped_8d479930_lang.css} +0 -0
  1167. /package/dist/treeshaking/components/user-center/internal/{OUnbindingThirdpartyAccountModal.css → OUnbindingThirdpartyAccountModal.vue_vue_type_style_index_0_scoped_d6042985_lang.css} +0 -0
  1168. /package/dist/treeshaking/components/user-center/verify/{Verify.css → Verify.vue_vue_type_style_index_0_lang.css} +0 -0
  1169. /package/dist/treeshaking/components/video/{OVideoDetail.css → OVideoDetail.vue_vue_type_style_index_0_lang.css} +0 -0
@@ -1,1693 +1,1788 @@
1
+ import { __toESM } from "../../_rolldown/runtime.mjs";
2
+ import { require_window } from "../../global/window.js.mjs";
1
3
  import resolveUrl from "../../@videojs/vhs-utils/es/resolve-url.js.mjs";
2
- import window$1 from "../../global/window.js.mjs";
3
- import { forEachMediaGroup } from "../../@videojs/vhs-utils/es/media-groups.js.mjs";
4
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";
5
+ 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
6
8
  /*! @name mpd-parser @version 1.3.1 @license Apache-2.0 */
7
- const isObject = (obj) => {
8
- return !!obj && typeof obj === "object";
9
+ var import_window = /* @__PURE__ */ __toESM(require_window());
10
+ var import_lib = require_lib();
11
+ var isObject = (obj) => {
12
+ return !!obj && typeof obj === "object";
9
13
  };
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
- }, {});
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
+ }, {});
26
24
  };
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;
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;
34
30
  };
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;
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;
45
37
  };
46
- const findIndexes = (l, key) => l.reduce((a, e, i) => {
47
- if (e[key]) {
48
- a.push(i);
49
- }
50
- return a;
38
+ var findIndexes = (l, key) => l.reduce((a, e, i) => {
39
+ if (e[key]) a.push(i);
40
+ return a;
51
41
  }, []);
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
- }, {}));
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
+ }, {}));
59
57
  };
60
58
  var errors = {
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"
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"
67
67
  };
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;
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;
104
113
  };
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}`;
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}`;
113
119
  };
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;
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;
122
134
  };
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
- }
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
+ }
190
187
  };
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
- };
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
+ };
204
218
  };
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;
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;
224
239
  };
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];
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];
263
277
  };
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;
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;
321
334
  };
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);
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);
328
346
  };
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;
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;
336
358
  };
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;
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;
343
372
  };
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
- });
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
+ });
352
385
  };
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
- });
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
+ });
398
432
  };
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;
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;
412
453
  };
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
- });
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
+ });
454
487
  };
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;
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;
462
493
  };
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;
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;
471
498
  };
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;
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;
512
526
  };
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;
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;
555
559
  };
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;
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;
588
590
  };
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
- }, {});
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
+ }, {});
605
605
  };
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;
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;
632
621
  }, {});
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
- });
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;
699
650
  };
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
- }, []);
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
+ });
708
694
  };
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;
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
+ }, []);
785
710
  };
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);
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;
800
752
  };
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;
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);
853
774
  };
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}`;
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;
875
821
  };
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);
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}`;
890
867
  };
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
- });
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);
930
909
  };
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;
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
+ });
948
953
  };
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;
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;
979
979
  };
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;
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);
1023
1012
  };
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));
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;
1031
1043
  };
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);
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));
1045
1056
  };
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);
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);
1052
1067
  };
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
- }
1068
+ var parseDate = (str) => {
1069
+ if (/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(str)) str += "Z";
1070
+ return Date.parse(str);
1295
1071
  };
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
- }, {});
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
+ }
1305
1312
  };
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"
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
+ }, {});
1313
1329
  };
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
- }));
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"
1331
1336
  };
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;
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
+ }));
1368
1358
  };
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
- });
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;
1380
1405
  };
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
- }, {});
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
+ });
1400
1450
  };
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
- }
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
+ }, {});
1464
1475
  };
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
- }));
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
+ });
1487
1511
  };
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)));
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
+ }));
1520
1542
  };
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)));
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)));
1532
1586
  };
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;
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)));
1548
1628
  };
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;
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;
1564
1652
  };
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
- };
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;
1623
1672
  };
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;
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
+ };
1640
1723
  };
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;
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;
1670
1735
  };
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
- });
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;
1682
1767
  };
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
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
+ });
1693
1778
  };
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 };