html.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. const svg = require('./svg.js');
  2. module.exports = {
  3. main: (option, index, tran) => {
  4. return `
  5. <div class="dplayer-mask"></div>
  6. <div class="dplayer-video-wrap">
  7. <video class="dplayer-video" ${option.video.pic ? `poster="${option.video.pic}"` : ``} webkit-playsinline playsinline ${option.screenshot ? `crossorigin="anonymous"` : ``} preload="${option.preload}" src="${option.video.url}"></video>
  8. <div class="dplayer-danmaku">
  9. <div class="dplayer-danmaku-item dplayer-danmaku-item--demo"></div>
  10. </div>
  11. <div class="dplayer-bezel">
  12. <span class="dplayer-bezel-icon"></span>
  13. ${option.danmaku ? `<span class="dplayer-danloading">${tran('Danmaku is loading')}</span>` : ``}
  14. <span class="diplayer-loading-icon">
  15. <svg height="100%" version="1.1" viewBox="0 0 22 22" width="100%">
  16. <svg x="7" y="1">
  17. <circle class="diplayer-loading-dot diplayer-loading-dot-0" cx="4" cy="4" r="2"></circle>
  18. </svg>
  19. <svg x="11" y="3">
  20. <circle class="diplayer-loading-dot diplayer-loading-dot-1" cx="4" cy="4" r="2"></circle>
  21. </svg>
  22. <svg x="13" y="7">
  23. <circle class="diplayer-loading-dot diplayer-loading-dot-2" cx="4" cy="4" r="2"></circle>
  24. </svg>
  25. <svg x="11" y="11">
  26. <circle class="diplayer-loading-dot diplayer-loading-dot-3" cx="4" cy="4" r="2"></circle>
  27. </svg>
  28. <svg x="7" y="13">
  29. <circle class="diplayer-loading-dot diplayer-loading-dot-4" cx="4" cy="4" r="2"></circle>
  30. </svg>
  31. <svg x="3" y="11">
  32. <circle class="diplayer-loading-dot diplayer-loading-dot-5" cx="4" cy="4" r="2"></circle>
  33. </svg>
  34. <svg x="1" y="7">
  35. <circle class="diplayer-loading-dot diplayer-loading-dot-6" cx="4" cy="4" r="2"></circle>
  36. </svg>
  37. <svg x="3" y="3">
  38. <circle class="diplayer-loading-dot diplayer-loading-dot-7" cx="4" cy="4" r="2"></circle>
  39. </svg>
  40. </svg>
  41. </span>
  42. </div>
  43. </div>
  44. <div class="dplayer-controller-mask"></div>
  45. <div class="dplayer-controller">
  46. <div class="dplayer-icons dplayer-icons-left">
  47. <button class="dplayer-icon dplayer-play-icon">`
  48. + svg('play')
  49. + ` </button>
  50. <div class="dplayer-volume">
  51. <button class="dplayer-icon dplayer-volume-icon">`
  52. + svg('volume-down')
  53. + ` </button>
  54. <div class="dplayer-volume-bar-wrap">
  55. <div class="dplayer-volume-bar">
  56. <div class="dplayer-volume-bar-inner" style="width: 70%; background: ${option.theme};">
  57. <span class="dplayer-thumb" style="background: ${option.theme}"></span>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <span class="dplayer-time"><span class="dplayer-ptime">0:00</span> / <span class="dplayer-dtime">0:00</span></span>
  63. </div>
  64. <div class="dplayer-icons dplayer-icons-right">
  65. ${option.screenshot ? `
  66. <a href="#" class="dplayer-icon dplayer-camera-icon"}dplayer-volume>`
  67. + svg('camera')
  68. + ` </a>
  69. ` : ``}
  70. <div class="dplayer-comment">
  71. <button class="dplayer-icon dplayer-comment-icon">`
  72. + svg('comment')
  73. + ` </button>
  74. <div class="dplayer-comment-box">
  75. <button class="dplayer-icon dplayer-comment-setting-icon">`
  76. + svg('menu')
  77. + ` </button>
  78. <div class="dplayer-comment-setting-box">
  79. <div class="dplayer-comment-setting-color">
  80. <div class="dplayer-comment-setting-title">${tran('Set danmaku color')}</div>
  81. <label>
  82. <input type="radio" name="dplayer-danmaku-color-${index}" value="#fff" checked>
  83. <span style="background: #fff; border: 1px solid rgba(0,0,0,.1);"></span>
  84. </label>
  85. <label>
  86. <input type="radio" name="dplayer-danmaku-color-${index}" value="#e54256">
  87. <span style="background: #e54256"></span>
  88. </label>
  89. <label>
  90. <input type="radio" name="dplayer-danmaku-color-${index}" value="#ffe133">
  91. <span style="background: #ffe133"></span>
  92. </label>
  93. <label>
  94. <input type="radio" name="dplayer-danmaku-color-${index}" value="#64DD17">
  95. <span style="background: #64DD17"></span>
  96. </label>
  97. <label>
  98. <input type="radio" name="dplayer-danmaku-color-${index}" value="#39ccff">
  99. <span style="background: #39ccff"></span>
  100. </label>
  101. <label>
  102. <input type="radio" name="dplayer-danmaku-color-${index}" value="#D500F9">
  103. <span style="background: #D500F9"></span>
  104. </label>
  105. </div>
  106. <div class="dplayer-comment-setting-type">
  107. <div class="dplayer-comment-setting-title">${tran('Set danmaku type')}</div>
  108. <label>
  109. <input type="radio" name="dplayer-danmaku-type-${index}" value="top">
  110. <span>${tran('Top')}</span>
  111. </label>
  112. <label>
  113. <input type="radio" name="dplayer-danmaku-type-${index}" value="right" checked>
  114. <span>${tran('Rolling')}</span>
  115. </label>
  116. <label>
  117. <input type="radio" name="dplayer-danmaku-type-${index}" value="bottom">
  118. <span>${tran('Bottom')}</span>
  119. </label>
  120. </div>
  121. </div>
  122. <input class="dplayer-comment-input" type="text" placeholder="${tran('Input danmaku, hit Enter')}" maxlength="30">
  123. <button class="dplayer-icon dplayer-send-icon">`
  124. + svg('send')
  125. + ` </button>
  126. </div>
  127. </div>
  128. <div class="dplayer-setting">
  129. <button class="dplayer-icon dplayer-setting-icon">`
  130. + svg('setting')
  131. + ` </button>
  132. <div class="dplayer-setting-box"></div>
  133. </div>
  134. <div class="dplayer-full">
  135. <button class="dplayer-icon dplayer-full-in-icon">`
  136. + svg('full-in')
  137. + ` </button>
  138. <button class="dplayer-icon dplayer-full-icon">`
  139. + svg('full')
  140. + ` </button>
  141. </div>
  142. </div>
  143. <div class="dplayer-bar-wrap">
  144. <div class="dplayer-bar-time hidden">00:00</div>
  145. <div class="dplayer-bar">
  146. <div class="dplayer-loaded" style="width: 0;"></div>
  147. <div class="dplayer-played" style="width: 0; background: ${option.theme}">
  148. <span class="dplayer-thumb" style="background: ${option.theme}"></span>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="dplayer-menu">
  154. <div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="http://diygod.me/">${tran('About author')}</a></span></div>
  155. <div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer/issues">${tran('DPlayer feedback')}</a></span></div>
  156. <div class="dplayer-menu-item"><span class="dplayer-menu-label"><a target="_blank" href="https://github.com/DIYgod/DPlayer">${tran('About DPlayer')}</a></span></div>
  157. </div>
  158. `;
  159. },
  160. setting: (tran) => {
  161. return {
  162. 'original': `
  163. <div class="dplayer-setting-item dplayer-setting-speed">
  164. <span class="dplayer-label">${tran('Speed')}</span>
  165. <div class="dplayer-toggle">`
  166. + svg('right')
  167. + ` </div>
  168. </div>
  169. <div class="dplayer-setting-item dplayer-setting-loop">
  170. <span class="dplayer-label">${tran('Loop')}</span>
  171. <div class="dplayer-toggle">
  172. <input class="dplayer-toggle-setting-input" type="checkbox" name="dplayer-toggle">
  173. <label for="dplayer-toggle"></label>
  174. </div>
  175. </div>
  176. <div class="dplayer-setting-item dplayer-setting-showdan">
  177. <span class="dplayer-label">${tran('Danmaku')}</span>
  178. <div class="dplayer-toggle">
  179. <input class="dplayer-showdan-setting-input" type="checkbox" name="dplayer-toggle-dan">
  180. <label for="dplayer-toggle-dan"></label>
  181. </div>
  182. </div>
  183. <div class="dplayer-setting-item dplayer-setting-danmaku">
  184. <span class="dplayer-label">${tran('Opacity for danmaku')}</span>
  185. <div class="dplayer-danmaku-bar-wrap">
  186. <div class="dplayer-danmaku-bar">
  187. <div class="dplayer-danmaku-bar-inner" style="width: ${(localStorage.getItem('DPlayer-opacity') || 0.7) * 100}%">
  188. <span class="dplayer-thumb"></span>
  189. </div>
  190. </div>
  191. </div>
  192. </div>`,
  193. 'speed': `
  194. <div class="dplayer-setting-speed-item" data-speed="0.5">
  195. <span class="dplayer-label">0.5</span>
  196. </div>
  197. <div class="dplayer-setting-speed-item" data-speed="0.75">
  198. <span class="dplayer-label">0.75</span>
  199. </div>
  200. <div class="dplayer-setting-speed-item" data-speed="1">
  201. <span class="dplayer-label">${tran('Normal')}</span>
  202. </div>
  203. <div class="dplayer-setting-speed-item" data-speed="1.25">
  204. <span class="dplayer-label">1.25</span>
  205. </div>
  206. <div class="dplayer-setting-speed-item" data-speed="1.5">
  207. <span class="dplayer-label">1.5</span>
  208. </div>
  209. <div class="dplayer-setting-speed-item" data-speed="2">
  210. <span class="dplayer-label">2</span>
  211. </div>`
  212. }
  213. }
  214. }