@sigmaott/base-next 1.0.6

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 (733) hide show
  1. package/README.md +1 -0
  2. package/hyrd-ui.preset.ts +463 -0
  3. package/i18n.config.ts +3 -0
  4. package/locales/en.yaml +719 -0
  5. package/locales/vi.yaml +726 -0
  6. package/nuxt-config.ts +23 -0
  7. package/nuxt.config.ts +267 -0
  8. package/package.json +119 -0
  9. package/public/routes.json +34 -0
  10. package/src/MediaInfoModule.wasm +0 -0
  11. package/src/api/api.ts +15 -0
  12. package/src/api/axios.ts +125 -0
  13. package/src/api/service-loading.ts +50 -0
  14. package/src/api-client-auth/.openapi-generator/FILES +83 -0
  15. package/src/api-client-auth/.openapi-generator/VERSION +1 -0
  16. package/src/api-client-auth/.openapi-generator-ignore +23 -0
  17. package/src/api-client-auth/api/admin-groups-api.ts +612 -0
  18. package/src/api-client-auth/api/admin-members-api.ts +708 -0
  19. package/src/api-client-auth/api/administration-api-groups-api.ts +547 -0
  20. package/src/api-client-auth/api/administration-apps-api.ts +709 -0
  21. package/src/api-client-auth/api/administration-packages-api.ts +547 -0
  22. package/src/api-client-auth/api/api-groups-api.ts +296 -0
  23. package/src/api-client-auth/api/apps-api.ts +1613 -0
  24. package/src/api-client-auth/api/basic-credential-api.ts +950 -0
  25. package/src/api-client-auth/api/groups-api.ts +702 -0
  26. package/src/api-client-auth/api/members-api.ts +708 -0
  27. package/src/api-client-auth/api/members-on-premise-api.ts +351 -0
  28. package/src/api-client-auth/api/packages-api.ts +296 -0
  29. package/src/api-client-auth/api/users-api.ts +1387 -0
  30. package/src/api-client-auth/api.ts +30 -0
  31. package/src/api-client-auth/base.ts +72 -0
  32. package/src/api-client-auth/common.ts +150 -0
  33. package/src/api-client-auth/configuration.ts +101 -0
  34. package/src/api-client-auth/git_push.sh +57 -0
  35. package/src/api-client-auth/index.ts +18 -0
  36. package/src/api-client-auth/models/add-member-dto.ts +42 -0
  37. package/src/api-client-auth/models/admin-permission.ts +44 -0
  38. package/src/api-client-auth/models/api-group-collection.ts +57 -0
  39. package/src/api-client-auth/models/api-group.ts +80 -0
  40. package/src/api-client-auth/models/api.ts +44 -0
  41. package/src/api-client-auth/models/app-collection.ts +57 -0
  42. package/src/api-client-auth/models/app.ts +147 -0
  43. package/src/api-client-auth/models/backdoor-cred.ts +39 -0
  44. package/src/api-client-auth/models/basic-cred-collection.ts +57 -0
  45. package/src/api-client-auth/models/basic-cred.ts +83 -0
  46. package/src/api-client-auth/models/change-password-dto.ts +42 -0
  47. package/src/api-client-auth/models/create-admin-group-dto.ts +39 -0
  48. package/src/api-client-auth/models/create-api-group-dto.ts +42 -0
  49. package/src/api-client-auth/models/create-app-by-user-dto.ts +36 -0
  50. package/src/api-client-auth/models/create-app-dto.ts +65 -0
  51. package/src/api-client-auth/models/create-basic-cred-dto.ts +39 -0
  52. package/src/api-client-auth/models/create-group-dto.ts +39 -0
  53. package/src/api-client-auth/models/create-package-dto.ts +48 -0
  54. package/src/api-client-auth/models/create-user-dto.ts +60 -0
  55. package/src/api-client-auth/models/free-trial.ts +54 -0
  56. package/src/api-client-auth/models/general-app.ts +48 -0
  57. package/src/api-client-auth/models/generate-app-id.ts +30 -0
  58. package/src/api-client-auth/models/group-collection.ts +57 -0
  59. package/src/api-client-auth/models/group.ts +75 -0
  60. package/src/api-client-auth/models/index.ts +60 -0
  61. package/src/api-client-auth/models/invite-email-dto.ts +30 -0
  62. package/src/api-client-auth/models/invite-member-dto.ts +36 -0
  63. package/src/api-client-auth/models/live-stream-quota.ts +42 -0
  64. package/src/api-client-auth/models/login-dto.ts +36 -0
  65. package/src/api-client-auth/models/login-result.ts +39 -0
  66. package/src/api-client-auth/models/member-collection.ts +57 -0
  67. package/src/api-client-auth/models/member.ts +92 -0
  68. package/src/api-client-auth/models/package-collection.ts +57 -0
  69. package/src/api-client-auth/models/package-permission.ts +44 -0
  70. package/src/api-client-auth/models/package.ts +66 -0
  71. package/src/api-client-auth/models/permission.ts +44 -0
  72. package/src/api-client-auth/models/quota.ts +45 -0
  73. package/src/api-client-auth/models/re-get-password-dto.ts +30 -0
  74. package/src/api-client-auth/models/register-dto.ts +54 -0
  75. package/src/api-client-auth/models/register-through-email-dto.ts +36 -0
  76. package/src/api-client-auth/models/rename-app-dto.ts +30 -0
  77. package/src/api-client-auth/models/resend-confirmation-dto.ts +30 -0
  78. package/src/api-client-auth/models/resend-invitation-dto.ts +30 -0
  79. package/src/api-client-auth/models/resend-result.ts +36 -0
  80. package/src/api-client-auth/models/reset-password-dto.ts +36 -0
  81. package/src/api-client-auth/models/revoke-basic-dto.ts +38 -0
  82. package/src/api-client-auth/models/signup-result.ts +45 -0
  83. package/src/api-client-auth/models/token-check-result.ts +36 -0
  84. package/src/api-client-auth/models/trial-remaining-days.ts +42 -0
  85. package/src/api-client-auth/models/update-admin-group-dto.ts +39 -0
  86. package/src/api-client-auth/models/update-api-group-dto.ts +30 -0
  87. package/src/api-client-auth/models/update-app-by-admin-dto.ts +48 -0
  88. package/src/api-client-auth/models/update-app-by-user-dto.ts +36 -0
  89. package/src/api-client-auth/models/update-basic-cred-dto.ts +30 -0
  90. package/src/api-client-auth/models/update-group-dto.ts +39 -0
  91. package/src/api-client-auth/models/update-member-dto.ts +30 -0
  92. package/src/api-client-auth/models/update-package-dto.ts +42 -0
  93. package/src/api-client-auth/models/update-password-member-dto.ts +30 -0
  94. package/src/api-client-auth/models/update-user-by-user-dto.ts +48 -0
  95. package/src/api-client-auth/models/user.ts +120 -0
  96. package/src/api-client-auth/models/validate-app-id.ts +36 -0
  97. package/src/api-client-billing/.openapi-generator/FILES +38 -0
  98. package/src/api-client-billing/.openapi-generator/VERSION +1 -0
  99. package/src/api-client-billing/.openapi-generator-ignore +23 -0
  100. package/src/api-client-billing/api/invoice-api.ts +363 -0
  101. package/src/api-client-billing/api/payment-methods-api.ts +414 -0
  102. package/src/api-client-billing/api/payment-plan-api.ts +121 -0
  103. package/src/api-client-billing/api/subscriptions-api.ts +121 -0
  104. package/src/api-client-billing/api/usages-api.ts +121 -0
  105. package/src/api-client-billing/api/vnpay-provider-api.ts +327 -0
  106. package/src/api-client-billing/api.ts +23 -0
  107. package/src/api-client-billing/base.ts +72 -0
  108. package/src/api-client-billing/common.ts +150 -0
  109. package/src/api-client-billing/configuration.ts +101 -0
  110. package/src/api-client-billing/git_push.sh +57 -0
  111. package/src/api-client-billing/index.ts +18 -0
  112. package/src/api-client-billing/models/common-paginate-response.ts +48 -0
  113. package/src/api-client-billing/models/dto-billing-item-info.ts +60 -0
  114. package/src/api-client-billing/models/dto-billing-item.ts +36 -0
  115. package/src/api-client-billing/models/dto-create-draft-invoice-request.ts +33 -0
  116. package/src/api-client-billing/models/dto-create-draft-invoice-response.ts +57 -0
  117. package/src/api-client-billing/models/dto-create-vnpay-card-form.ts +48 -0
  118. package/src/api-client-billing/models/dto-return-uri-response.ts +30 -0
  119. package/src/api-client-billing/models/index.ts +22 -0
  120. package/src/api-client-billing/models/invoices-get200-response.ts +42 -0
  121. package/src/api-client-billing/models/model-charge.ts +47 -0
  122. package/src/api-client-billing/models/model-charges-usage.ts +57 -0
  123. package/src/api-client-billing/models/model-graduated-range.ts +48 -0
  124. package/src/api-client-billing/models/model-info.ts +42 -0
  125. package/src/api-client-billing/models/model-invoice.ts +105 -0
  126. package/src/api-client-billing/models/model-item-usage.ts +54 -0
  127. package/src/api-client-billing/models/model-payment-method.ts +135 -0
  128. package/src/api-client-billing/models/model-product.ts +51 -0
  129. package/src/api-client-billing/models/model-properties.ts +39 -0
  130. package/src/api-client-billing/models/model-quota.ts +48 -0
  131. package/src/api-client-billing/models/model-subscription.ts +51 -0
  132. package/src/api-client-billing/models/model-usage-payment.ts +87 -0
  133. package/src/api-client-billing/models/payment-methods-get200-response.ts +42 -0
  134. package/src/api-client-billing/models/subscriptions-get200-response.ts +42 -0
  135. package/src/api-client-machine/.openapi-generator/FILES +90 -0
  136. package/src/api-client-machine/.openapi-generator/VERSION +1 -0
  137. package/src/api-client-machine/.openapi-generator-ignore +23 -0
  138. package/src/api-client-machine/api/apps-config-api.ts +523 -0
  139. package/src/api-client-machine/api/component-clusters-api.ts +741 -0
  140. package/src/api-client-machine/api/expose-api.ts +141 -0
  141. package/src/api-client-machine/api/machine-actions-api.ts +850 -0
  142. package/src/api-client-machine/api/machines-api.ts +524 -0
  143. package/src/api-client-machine/api/networks-api.ts +375 -0
  144. package/src/api-client-machine/api/sigma-clusters-api.ts +741 -0
  145. package/src/api-client-machine/api/sigma-machine-actions-api.ts +292 -0
  146. package/src/api-client-machine/api/sigma-machine-apps-configuration-api.ts +523 -0
  147. package/src/api-client-machine/api/sigma-machines-api.ts +557 -0
  148. package/src/api-client-machine/api/sigma-vod-server-api.ts +478 -0
  149. package/src/api-client-machine/api/sigma-vod-server-app-config-api.ts +980 -0
  150. package/src/api-client-machine/api/transcoder-configuration-api.ts +359 -0
  151. package/src/api-client-machine/api.ts +30 -0
  152. package/src/api-client-machine/base.ts +72 -0
  153. package/src/api-client-machine/common.ts +150 -0
  154. package/src/api-client-machine/configuration.ts +101 -0
  155. package/src/api-client-machine/git_push.sh +57 -0
  156. package/src/api-client-machine/index.ts +18 -0
  157. package/src/api-client-machine/models/actions-to-app-dto.ts +38 -0
  158. package/src/api-client-machine/models/add-license-machine-dto.ts +30 -0
  159. package/src/api-client-machine/models/app-status.ts +47 -0
  160. package/src/api-client-machine/models/check-quota-limit-result.ts +36 -0
  161. package/src/api-client-machine/models/cluster-log.ts +54 -0
  162. package/src/api-client-machine/models/component-cluster-collection.ts +57 -0
  163. package/src/api-client-machine/models/component-cluster.ts +116 -0
  164. package/src/api-client-machine/models/create-component-machine-cluster-dto.ts +86 -0
  165. package/src/api-client-machine/models/create-sigma-machine-cluster-dto.ts +77 -0
  166. package/src/api-client-machine/models/create-vodroute-dto.ts +42 -0
  167. package/src/api-client-machine/models/decklink-collection.ts +57 -0
  168. package/src/api-client-machine/models/decklink.ts +42 -0
  169. package/src/api-client-machine/models/http-app.ts +45 -0
  170. package/src/api-client-machine/models/https-config.ts +42 -0
  171. package/src/api-client-machine/models/index.ts +67 -0
  172. package/src/api-client-machine/models/info-channel.ts +42 -0
  173. package/src/api-client-machine/models/ingest-app.ts +60 -0
  174. package/src/api-client-machine/models/ingest-config.ts +74 -0
  175. package/src/api-client-machine/models/ingest-update-config-dto.ts +68 -0
  176. package/src/api-client-machine/models/machine-cluster-collection.ts +57 -0
  177. package/src/api-client-machine/models/machine-cluster.ts +120 -0
  178. package/src/api-client-machine/models/machine-details-license.ts +42 -0
  179. package/src/api-client-machine/models/machine-details.ts +127 -0
  180. package/src/api-client-machine/models/machine-dto.ts +42 -0
  181. package/src/api-client-machine/models/machine-dump.ts +108 -0
  182. package/src/api-client-machine/models/machine.ts +42 -0
  183. package/src/api-client-machine/models/network-collection.ts +57 -0
  184. package/src/api-client-machine/models/network-interface.ts +36 -0
  185. package/src/api-client-machine/models/network.ts +66 -0
  186. package/src/api-client-machine/models/origin-config.ts +50 -0
  187. package/src/api-client-machine/models/origin-update-config-dto.ts +59 -0
  188. package/src/api-client-machine/models/packager-component-cluster.ts +42 -0
  189. package/src/api-client-machine/models/packager-live-cluster.ts +42 -0
  190. package/src/api-client-machine/models/packager-to-component-cluster.ts +51 -0
  191. package/src/api-client-machine/models/quotas-result.ts +30 -0
  192. package/src/api-client-machine/models/registration-config.ts +48 -0
  193. package/src/api-client-machine/models/sigma-cluster-ingest-config.ts +42 -0
  194. package/src/api-client-machine/models/sigma-cluster-origin-config.ts +30 -0
  195. package/src/api-client-machine/models/sigma-ingest-config-entity.ts +42 -0
  196. package/src/api-client-machine/models/sigma-ingest-config.ts +42 -0
  197. package/src/api-client-machine/models/sigma-origin-config-entity.ts +30 -0
  198. package/src/api-client-machine/models/sigma-origin-config.ts +30 -0
  199. package/src/api-client-machine/models/stats.ts +57 -0
  200. package/src/api-client-machine/models/status.ts +36 -0
  201. package/src/api-client-machine/models/stop-channel.ts +48 -0
  202. package/src/api-client-machine/models/transcoder-apps.ts +42 -0
  203. package/src/api-client-machine/models/transcoder-collection.ts +57 -0
  204. package/src/api-client-machine/models/transcoder-component-cluster.ts +42 -0
  205. package/src/api-client-machine/models/transcoder-license.ts +42 -0
  206. package/src/api-client-machine/models/transcoder-live-cluster.ts +42 -0
  207. package/src/api-client-machine/models/transcoder-live-to-component-cluster.ts +45 -0
  208. package/src/api-client-machine/models/transcoder-network.ts +42 -0
  209. package/src/api-client-machine/models/transcoder.ts +276 -0
  210. package/src/api-client-machine/models/update-app-config-dto-config-data.ts +33 -0
  211. package/src/api-client-machine/models/update-app-config-dto.ts +33 -0
  212. package/src/api-client-machine/models/update-app-config-of-sigma-vod-server-dto-config-data.ts +30 -0
  213. package/src/api-client-machine/models/update-app-config-of-sigma-vod-server-dto.ts +33 -0
  214. package/src/api-client-machine/models/update-component-cluster-dto.ts +72 -0
  215. package/src/api-client-machine/models/update-machine-cluster-dto.ts +63 -0
  216. package/src/api-client-machine/models/update-machine-dto.ts +42 -0
  217. package/src/api-client-machine/models/update-packager-live-cluster.ts +42 -0
  218. package/src/api-client-machine/models/update-packager-to-component-cluster.ts +51 -0
  219. package/src/api-client-machine/models/update-route-config-of-sigma-vod-server.ts +33 -0
  220. package/src/api-client-machine/models/update-route-config-sigma-machine.ts +42 -0
  221. package/src/api-client-machine/models/update-transcoder-live-cluster.ts +42 -0
  222. package/src/api-client-machine/models/update-transcoder-to-component-cluster.ts +45 -0
  223. package/src/api-client-machine/models/video-encoder.ts +56 -0
  224. package/src/api-client-machine/models/vodroute.ts +60 -0
  225. package/src/api-client-noti/.openapi-generator/FILES +13 -0
  226. package/src/api-client-noti/.openapi-generator/VERSION +1 -0
  227. package/src/api-client-noti/.openapi-generator-ignore +23 -0
  228. package/src/api-client-noti/api/notification-api.ts +386 -0
  229. package/src/api-client-noti/api.ts +18 -0
  230. package/src/api-client-noti/base.ts +72 -0
  231. package/src/api-client-noti/common.ts +150 -0
  232. package/src/api-client-noti/configuration.ts +101 -0
  233. package/src/api-client-noti/git_push.sh +57 -0
  234. package/src/api-client-noti/index.ts +18 -0
  235. package/src/api-client-noti/models/index.ts +2 -0
  236. package/src/api-client-noti/models/notification-collection.ts +57 -0
  237. package/src/api-client-noti/models/notification.ts +101 -0
  238. package/src/api-client-transcode/.openapi-generator/FILES +129 -0
  239. package/src/api-client-transcode/.openapi-generator/VERSION +1 -0
  240. package/src/api-client-transcode/.openapi-generator-ignore +23 -0
  241. package/src/api-client-transcode/api/alert-logs-apiapi.ts +281 -0
  242. package/src/api-client-transcode/api/channel-package-inputs-apiapi.ts +650 -0
  243. package/src/api-client-transcode/api/channel-transcode-inputs-apiapi.ts +650 -0
  244. package/src/api-client-transcode/api/channels-crudapiapi.ts +869 -0
  245. package/src/api-client-transcode/api/channels-job-action-apiapi.ts +434 -0
  246. package/src/api-client-transcode/api/drm-credentials-api.ts +525 -0
  247. package/src/api-client-transcode/api/event-channel-action-apiapi.ts +363 -0
  248. package/src/api-client-transcode/api/event-channel-crudapiapi.ts +545 -0
  249. package/src/api-client-transcode/api/fast-channel-action-apiapi.ts +301 -0
  250. package/src/api-client-transcode/api/fast-channel-apiapi.ts +525 -0
  251. package/src/api-client-transcode/api/fast-channel-programs-api-api.ts +525 -0
  252. package/src/api-client-transcode/api/multi-channel-action-apiapi.ts +387 -0
  253. package/src/api-client-transcode/api/sigma-transcode-live-interactive-action-api.ts +152 -0
  254. package/src/api-client-transcode/api/single-channel-action-apiapi.ts +1155 -0
  255. package/src/api-client-transcode/api/transcode-templates-apiapi.ts +541 -0
  256. package/src/api-client-transcode/api.ts +32 -0
  257. package/src/api-client-transcode/base.ts +71 -0
  258. package/src/api-client-transcode/common.ts +138 -0
  259. package/src/api-client-transcode/configuration.ts +101 -0
  260. package/src/api-client-transcode/git_push.sh +57 -0
  261. package/src/api-client-transcode/index.ts +18 -0
  262. package/src/api-client-transcode/models/ads-dto.ts +137 -0
  263. package/src/api-client-transcode/models/alert-log-collection.ts +55 -0
  264. package/src/api-client-transcode/models/audio-watermark-dto.ts +59 -0
  265. package/src/api-client-transcode/models/blackout-slate-dto.ts +36 -0
  266. package/src/api-client-transcode/models/catchup-dto.ts +43 -0
  267. package/src/api-client-transcode/models/channel-collection.ts +55 -0
  268. package/src/api-client-transcode/models/channel-config-advance-dto-info.ts +25 -0
  269. package/src/api-client-transcode/models/channel-config-advance-dto.ts +121 -0
  270. package/src/api-client-transcode/models/channel-config-advance-info-dto.ts +78 -0
  271. package/src/api-client-transcode/models/channel-config-base.ts +69 -0
  272. package/src/api-client-transcode/models/channel-config-blackout-entity.ts +36 -0
  273. package/src/api-client-transcode/models/channel-config-dto.ts +72 -0
  274. package/src/api-client-transcode/models/channel-config-interactive-entity.ts +30 -0
  275. package/src/api-client-transcode/models/channel-config-template-dto.ts +66 -0
  276. package/src/api-client-transcode/models/channel-detail-catchup-dto.ts +37 -0
  277. package/src/api-client-transcode/models/channel-detail-dto.ts +69 -0
  278. package/src/api-client-transcode/models/channel-detail-input.ts +43 -0
  279. package/src/api-client-transcode/models/channel-detail-package.ts +50 -0
  280. package/src/api-client-transcode/models/channel-detail-transcode.ts +37 -0
  281. package/src/api-client-transcode/models/channel-job-detail.ts +84 -0
  282. package/src/api-client-transcode/models/channel-stats.ts +36 -0
  283. package/src/api-client-transcode/models/channel-template-data-dto.ts +59 -0
  284. package/src/api-client-transcode/models/channel-template-dto-data.ts +28 -0
  285. package/src/api-client-transcode/models/channel-template-dto.ts +63 -0
  286. package/src/api-client-transcode/models/channel.ts +168 -0
  287. package/src/api-client-transcode/models/create-alert-log-dto.ts +138 -0
  288. package/src/api-client-transcode/models/create-channel-dto.ts +84 -0
  289. package/src/api-client-transcode/models/create-drm-credential-dto.ts +63 -0
  290. package/src/api-client-transcode/models/create-event-channel-dto-targets.ts +26 -0
  291. package/src/api-client-transcode/models/create-event-channel-dto.ts +76 -0
  292. package/src/api-client-transcode/models/create-fast-channel-dto.ts +42 -0
  293. package/src/api-client-transcode/models/create-fast-program-dto.ts +72 -0
  294. package/src/api-client-transcode/models/drm-credential-collection.ts +55 -0
  295. package/src/api-client-transcode/models/drm-credential-entity.ts +87 -0
  296. package/src/api-client-transcode/models/drm-data-dto.ts +54 -0
  297. package/src/api-client-transcode/models/drm-data-entity.ts +54 -0
  298. package/src/api-client-transcode/models/drm-dto.ts +103 -0
  299. package/src/api-client-transcode/models/event-channel-collection.ts +55 -0
  300. package/src/api-client-transcode/models/event-channel-config-dto.ts +78 -0
  301. package/src/api-client-transcode/models/event-channel-config-entity.ts +75 -0
  302. package/src/api-client-transcode/models/event-channel-input-dto.ts +45 -0
  303. package/src/api-client-transcode/models/event-channel-input-entity.ts +45 -0
  304. package/src/api-client-transcode/models/event-channel-transcoder-dto.ts +56 -0
  305. package/src/api-client-transcode/models/event-channel.ts +147 -0
  306. package/src/api-client-transcode/models/event-profile-dto.ts +62 -0
  307. package/src/api-client-transcode/models/event-target-data-dto.ts +95 -0
  308. package/src/api-client-transcode/models/event-target-dto.ts +49 -0
  309. package/src/api-client-transcode/models/fast-channel-collection.ts +55 -0
  310. package/src/api-client-transcode/models/fast-channel.ts +75 -0
  311. package/src/api-client-transcode/models/fast-program-collection.ts +55 -0
  312. package/src/api-client-transcode/models/fast-program.ts +84 -0
  313. package/src/api-client-transcode/models/fingerprint-dto.ts +42 -0
  314. package/src/api-client-transcode/models/index.ts +104 -0
  315. package/src/api-client-transcode/models/input-collection.ts +55 -0
  316. package/src/api-client-transcode/models/input-data-dto.ts +104 -0
  317. package/src/api-client-transcode/models/input-data-item-dto.ts +42 -0
  318. package/src/api-client-transcode/models/input-dto.ts +30 -0
  319. package/src/api-client-transcode/models/input-entity.ts +30 -0
  320. package/src/api-client-transcode/models/input-info-response.ts +31 -0
  321. package/src/api-client-transcode/models/input-info.ts +123 -0
  322. package/src/api-client-transcode/models/input-machine-config.ts +45 -0
  323. package/src/api-client-transcode/models/input-program.ts +66 -0
  324. package/src/api-client-transcode/models/interactive-dto.ts +30 -0
  325. package/src/api-client-transcode/models/interactive-publish-dto.ts +30 -0
  326. package/src/api-client-transcode/models/job-entity.ts +102 -0
  327. package/src/api-client-transcode/models/low-latency-dto.ts +68 -0
  328. package/src/api-client-transcode/models/machine-config-dto.ts +75 -0
  329. package/src/api-client-transcode/models/main-input-dto.ts +62 -0
  330. package/src/api-client-transcode/models/main-input-entity.ts +54 -0
  331. package/src/api-client-transcode/models/maintenance-dto.ts +30 -0
  332. package/src/api-client-transcode/models/manifest-dto.ts +62 -0
  333. package/src/api-client-transcode/models/package-input-collection.ts +55 -0
  334. package/src/api-client-transcode/models/package-input-data-dto.ts +99 -0
  335. package/src/api-client-transcode/models/package-input-list.ts +36 -0
  336. package/src/api-client-transcode/models/package-input.ts +115 -0
  337. package/src/api-client-transcode/models/post-input-dto.ts +48 -0
  338. package/src/api-client-transcode/models/post-input-entity.ts +48 -0
  339. package/src/api-client-transcode/models/pre-input-dto.ts +54 -0
  340. package/src/api-client-transcode/models/pre-input-entity.ts +54 -0
  341. package/src/api-client-transcode/models/preset-dto.ts +247 -0
  342. package/src/api-client-transcode/models/profile-default-response-dto.ts +30 -0
  343. package/src/api-client-transcode/models/profile-dto.ts +62 -0
  344. package/src/api-client-transcode/models/profile-entity.ts +60 -0
  345. package/src/api-client-transcode/models/scte35-dto.ts +36 -0
  346. package/src/api-client-transcode/models/start-over-dto.ts +30 -0
  347. package/src/api-client-transcode/models/switch-input-dto.ts +56 -0
  348. package/src/api-client-transcode/models/switch-input-entity.ts +44 -0
  349. package/src/api-client-transcode/models/target-data-dto.ts +101 -0
  350. package/src/api-client-transcode/models/target-dto.ts +44 -0
  351. package/src/api-client-transcode/models/target-entity.ts +55 -0
  352. package/src/api-client-transcode/models/target-profile-dto.ts +71 -0
  353. package/src/api-client-transcode/models/target-profile.ts +71 -0
  354. package/src/api-client-transcode/models/target-template-dto.ts +44 -0
  355. package/src/api-client-transcode/models/target-update-dto.ts +50 -0
  356. package/src/api-client-transcode/models/transcode-input.ts +144 -0
  357. package/src/api-client-transcode/models/transcoder.ts +36 -0
  358. package/src/api-client-transcode/models/trick-play-dto.ts +54 -0
  359. package/src/api-client-transcode/models/update-channel-dto-targets.ts +27 -0
  360. package/src/api-client-transcode/models/update-channel-dto.ts +84 -0
  361. package/src/api-client-transcode/models/update-drm-management-dto.ts +63 -0
  362. package/src/api-client-transcode/models/update-event-channel-dto.ts +76 -0
  363. package/src/api-client-transcode/models/update-fast-channel-dto.ts +42 -0
  364. package/src/api-client-transcode/models/update-fast-program-dto.ts +30 -0
  365. package/src/api-client-transcode/models/watermark-dto.ts +66 -0
  366. package/src/api-client-transcode/models/watermark-entity.ts +102 -0
  367. package/src/app/spa-loading-template.html +127 -0
  368. package/src/app.config.ts +2 -0
  369. package/src/assets/global.css.ts +3 -0
  370. package/src/assets/scss/element/dark.scss +13 -0
  371. package/src/assets/scss/element/index.scss +26 -0
  372. package/src/assets/scss/index.scss +181 -0
  373. package/src/components/AdvancedFilter/SSAdvancedFilterItem.vue +180 -0
  374. package/src/components/AdvancedFilter/SSAdvancedFilterItemCustom.vue +165 -0
  375. package/src/components/AdvancedFilter/SSAdvancedFilterItemDefined.vue +298 -0
  376. package/src/components/AdvancedFilter/SSAdvancedFilterItemSchedule.vue +293 -0
  377. package/src/components/AdvancedFilter/SSAdvancedFilterMain.vue +196 -0
  378. package/src/components/AdvancedFilter/types.ts +37 -0
  379. package/src/components/AdvancedFilterReport/SSAdvancedFilterReportItem.vue +110 -0
  380. package/src/components/AdvancedFilterReport/SSAdvancedFilterReportItemDefined.vue +159 -0
  381. package/src/components/AdvancedFilterReport/SSAdvancedFilterReportMain.vue +197 -0
  382. package/src/components/AdvancedFilterReport/types.ts +19 -0
  383. package/src/components/AdvancedFilterSsai/SSAdvancedFilterSsaiItem.vue +102 -0
  384. package/src/components/AdvancedFilterSsai/SSAdvancedFilterSsaiItemDefined.vue +119 -0
  385. package/src/components/AdvancedFilterSsai/SSAdvancedFilterSsaiMain.vue +194 -0
  386. package/src/components/AdvancedFilterSsai/types.ts +19 -0
  387. package/src/components/Asset/AssetAddPlaylist.vue +169 -0
  388. package/src/components/Asset/AssetExtra.vue +46 -0
  389. package/src/components/Asset/AssetImportLinks.vue +281 -0
  390. package/src/components/Asset/AssetInfiniteSelect.vue +62 -0
  391. package/src/components/Asset/AssetItem.vue +194 -0
  392. package/src/components/Asset/AssetItemPreview.vue +117 -0
  393. package/src/components/Asset/AssetList.vue +869 -0
  394. package/src/components/Asset/AssetMeta.vue +97 -0
  395. package/src/components/Asset/AssetPicker.vue +204 -0
  396. package/src/components/Asset/AssetPlaylist.vue +414 -0
  397. package/src/components/Asset/AssetPlaylistInfiniteSelect.vue +136 -0
  398. package/src/components/Asset/AssetPlaylistModalAdd.vue +138 -0
  399. package/src/components/Asset/AssetPreview.vue +89 -0
  400. package/src/components/Asset/AssetShareModal.vue +131 -0
  401. package/src/components/Asset/AssetTable.vue +365 -0
  402. package/src/components/Asset/FormUploadAsset.vue +647 -0
  403. package/src/components/Asset/FormUploadAssetItem.vue +115 -0
  404. package/src/components/Asset/FormUploadAssetProgress.vue +161 -0
  405. package/src/components/Asset/Scrubber.vue +57 -0
  406. package/src/components/Asset/VideoPlayer.vue +226 -0
  407. package/src/components/Asset/VideoPreview.vue +102 -0
  408. package/src/components/Asset/VideoPreviewConfig.vue +329 -0
  409. package/src/components/Asset/VideoPreviewConfigMessage.vue +120 -0
  410. package/src/components/Asset/VideoPreviewConfigVod.vue +287 -0
  411. package/src/components/Asset/VideoPreviewNew.vue +66 -0
  412. package/src/components/Asset/VideoPreviewNewLoader.vue +144 -0
  413. package/src/components/Asset/VideoPreviewWrapper.vue +208 -0
  414. package/src/components/Asset/asset-context.ts +24 -0
  415. package/src/components/Asset/usePickerStore.ts +55 -0
  416. package/src/components/AuthLayout/AuthLayoutSimple.vue +150 -0
  417. package/src/components/AuthLayout/index.vue +151 -0
  418. package/src/components/AutoRefresh/AutoRefresh.vue +91 -0
  419. package/src/components/AutoRefresh/AutoRefreshOld.vue +87 -0
  420. package/src/components/AutoRefresh/useRefresh.ts +93 -0
  421. package/src/components/BackButton.vue +13 -0
  422. package/src/components/Card/CardInfo.vue +21 -0
  423. package/src/components/Channel/AIConfig.vue +101 -0
  424. package/src/components/Channel/AdvancedForm.vue +542 -0
  425. package/src/components/Channel/ChannelListGrid.vue +154 -0
  426. package/src/components/Channel/ConfigBlackout.vue +98 -0
  427. package/src/components/Channel/ConfigCensorship.vue +387 -0
  428. package/src/components/Channel/ConfigForensicWatermark.vue +152 -0
  429. package/src/components/Channel/ConfigForm.vue +102 -0
  430. package/src/components/Channel/ConfigInformation.vue +191 -0
  431. package/src/components/Channel/ConfigInteraction.vue +11 -0
  432. package/src/components/Channel/ConfigNameModifier.vue +15 -0
  433. package/src/components/Channel/ConfigOptionItem.vue +114 -0
  434. package/src/components/Channel/ConfigOptions.vue +181 -0
  435. package/src/components/Channel/ConfigPte.vue +368 -0
  436. package/src/components/Channel/ConfigScte.vue +442 -0
  437. package/src/components/Channel/ConfigTranscoder.vue +353 -0
  438. package/src/components/Channel/ConfigWaterMarkAudio.vue +52 -0
  439. package/src/components/Channel/ConfigWatermark.vue +76 -0
  440. package/src/components/Channel/ConfigWatermarkEventChannel.vue +86 -0
  441. package/src/components/Channel/ConfigWatermarkItem.vue +239 -0
  442. package/src/components/Channel/HeaderItem.vue +75 -0
  443. package/src/components/Channel/InputDetail.vue +68 -0
  444. package/src/components/Channel/InputForm.vue +175 -0
  445. package/src/components/Channel/InputList.vue +38 -0
  446. package/src/components/Channel/InputPackageDetail.vue +125 -0
  447. package/src/components/Channel/MediaProfileFormModal.vue +79 -0
  448. package/src/components/Channel/MediaProfileModify.vue +229 -0
  449. package/src/components/Channel/MessageButtonGetHelp.vue +30 -0
  450. package/src/components/Channel/MessageTooltipAi.vue +29 -0
  451. package/src/components/Channel/MultipleSelectProfile.vue +312 -0
  452. package/src/components/Channel/PackageInputItem.vue +13 -0
  453. package/src/components/Channel/PresetConfigItem.vue +1957 -0
  454. package/src/components/Channel/PresetConfigItemExtra.vue +59 -0
  455. package/src/components/Channel/PresetConfigItemPId.vue +145 -0
  456. package/src/components/Channel/ProfileConfigItem.vue +829 -0
  457. package/src/components/Channel/ProfileDetailsList.vue +160 -0
  458. package/src/components/Channel/ProfileForm.vue +134 -0
  459. package/src/components/Channel/ProfileList.vue +228 -0
  460. package/src/components/Channel/SelectServer.vue +134 -0
  461. package/src/components/Channel/SignalLoss.vue +92 -0
  462. package/src/components/Channel/SwitchInputButton.vue +38 -0
  463. package/src/components/Channel/TargetCatchup.vue +75 -0
  464. package/src/components/Channel/TargetDataInfo.vue +100 -0
  465. package/src/components/Channel/TargetDestination.vue +375 -0
  466. package/src/components/Channel/TargetDrm.vue +518 -0
  467. package/src/components/Channel/TargetForm.vue +136 -0
  468. package/src/components/Channel/TargetList.vue +159 -0
  469. package/src/components/Channel/TargetLowLatency.vue +107 -0
  470. package/src/components/Channel/TargetMabrOutput.vue +58 -0
  471. package/src/components/Channel/TargetMabrOutputItem.vue +91 -0
  472. package/src/components/Channel/TargetManifest.vue +94 -0
  473. package/src/components/Channel/TargetNetworkInterface.vue +95 -0
  474. package/src/components/Channel/TargetOutputMultiplex.vue +237 -0
  475. package/src/components/Channel/TargetOutputType.vue +201 -0
  476. package/src/components/Channel/TargetOutputUdp.vue +200 -0
  477. package/src/components/Channel/TargetPreset.vue +541 -0
  478. package/src/components/Channel/TargetProfileAudioGroup.vue +27 -0
  479. package/src/components/Channel/TargetProfileProgram.vue +43 -0
  480. package/src/components/Channel/TargetProfileURI.vue +68 -0
  481. package/src/components/Channel/TargetSrtOutput.vue +35 -0
  482. package/src/components/Channel/TargetSrtOutputItem.vue +83 -0
  483. package/src/components/Channel/TargetStartover.vue +40 -0
  484. package/src/components/Channel/WarningName.vue +39 -0
  485. package/src/components/Channel/WarningOutput.vue +40 -0
  486. package/src/components/CollapseTagsTooltip/CollapseTagsTooltip.vue +87 -0
  487. package/src/components/CollapseTagsTooltip/index.ts +1 -0
  488. package/src/components/CopyButton.vue +46 -0
  489. package/src/components/CopyText.vue +40 -0
  490. package/src/components/CopyTextButton.vue +40 -0
  491. package/src/components/DefaultLayout/DefaultLayout.vue +134 -0
  492. package/src/components/DefaultLayout/GlobalASide.vue +75 -0
  493. package/src/components/DefaultLayout/GlobalFooter.vue +15 -0
  494. package/src/components/DefaultLayout/GlobalHeader.vue +43 -0
  495. package/src/components/DefaultLayout/Logo.vue +35 -0
  496. package/src/components/DefaultLayout/Menu.vue +464 -0
  497. package/src/components/DefaultLayout/RightMenu.vue +93 -0
  498. package/src/components/DialogWarningAddLicense.vue +37 -0
  499. package/src/components/Epg/Epg.vue +24 -0
  500. package/src/components/Epg/components/Channel.vue +28 -0
  501. package/src/components/Epg/components/Channels.vue +33 -0
  502. package/src/components/Epg/components/Layout.vue +121 -0
  503. package/src/components/Epg/components/Line.vue +41 -0
  504. package/src/components/Epg/components/Loader.vue +23 -0
  505. package/src/components/Epg/components/Program.vue +101 -0
  506. package/src/components/Epg/components/SideBar.vue +18 -0
  507. package/src/components/Epg/components/Timeline.vue +72 -0
  508. package/src/components/Epg/helpers/common.ts +68 -0
  509. package/src/components/Epg/helpers/epg.ts +192 -0
  510. package/src/components/Epg/helpers/index.ts +5 -0
  511. package/src/components/Epg/helpers/interfaces.ts +54 -0
  512. package/src/components/Epg/helpers/time.ts +51 -0
  513. package/src/components/Epg/helpers/types.ts +26 -0
  514. package/src/components/Epg/helpers/variables.ts +33 -0
  515. package/src/components/Epg/hooks/index.ts +2 -0
  516. package/src/components/Epg/hooks/useEpg.ts +160 -0
  517. package/src/components/Epg/hooks/useLayout.ts +187 -0
  518. package/src/components/Epg/hooks/useProgram.ts +63 -0
  519. package/src/components/Epg/hooks/useTimeline.ts +35 -0
  520. package/src/components/Epg/index.ts +4 -0
  521. package/src/components/Epg/store.ts +85 -0
  522. package/src/components/Epg/theme.ts +44 -0
  523. package/src/components/Exception/403.png +0 -0
  524. package/src/components/Exception/403.vue +58 -0
  525. package/src/components/Exception/404.png +0 -0
  526. package/src/components/Exception/404.vue +59 -0
  527. package/src/components/Exception/500.png +0 -0
  528. package/src/components/Exception/500.vue +39 -0
  529. package/src/components/Exception/index.scss +30 -0
  530. package/src/components/Field.vue +193 -0
  531. package/src/components/FilterQuerySchema/FilterQuerySchemaForm.vue +200 -0
  532. package/src/components/FilterQuerySchema/QueryTag.vue +109 -0
  533. package/src/components/FilterQuerySchema/Tag.vue +68 -0
  534. package/src/components/FilterTimeDimensions.vue +265 -0
  535. package/src/components/FilterTimeDimensionsSingle.vue +214 -0
  536. package/src/components/HelpPanel.vue +87 -0
  537. package/src/components/HexagonPro.vue +7 -0
  538. package/src/components/IconCopyButton.vue +43 -0
  539. package/src/components/InformationLabel.vue +67 -0
  540. package/src/components/Input/InputTags.vue +136 -0
  541. package/src/components/Input/index.ts +1 -0
  542. package/src/components/MainDefaultLayout/index.vue +120 -0
  543. package/src/components/NoticeAddLicense.vue +20 -0
  544. package/src/components/NoticeRunningOutResources.vue +20 -0
  545. package/src/components/Pagination.vue +61 -0
  546. package/src/components/QueryBuilder/QueryBuilder.vue +141 -0
  547. package/src/components/QueryBuilder/components/inputs/DateInputField.vue +105 -0
  548. package/src/components/QueryBuilder/components/inputs/FieldSelect.vue +44 -0
  549. package/src/components/QueryBuilder/components/inputs/InputMultiSelect.vue +60 -0
  550. package/src/components/QueryBuilder/components/inputs/InputSelect.vue +39 -0
  551. package/src/components/QueryBuilder/components/inputs/NumberInputField.vue +91 -0
  552. package/src/components/QueryBuilder/components/inputs/OperatorSelect.vue +59 -0
  553. package/src/components/QueryBuilder/components/inputs/TextInput.vue +40 -0
  554. package/src/components/QueryBuilder/components/inputs/TimeInputField.vue +114 -0
  555. package/src/components/QueryBuilder/components/inputs/logics.ts +27 -0
  556. package/src/components/QueryBuilder/components/item/InputMultiOptions.vue +56 -0
  557. package/src/components/QueryBuilder/components/item/QueryGroup.vue +71 -0
  558. package/src/components/QueryBuilder/components/item/QueryGroupActions.vue +76 -0
  559. package/src/components/QueryBuilder/components/item/QueryRule.vue +233 -0
  560. package/src/components/QueryBuilder/useConfigStore.ts +27 -0
  561. package/src/components/QueryBuilder/utils/config.ts +194 -0
  562. package/src/components/QueryBuilder/utils/index.ts +3 -0
  563. package/src/components/QueryBuilder/utils/mongodb.ts +175 -0
  564. package/src/components/QueryBuilder/utils/rules.ts +213 -0
  565. package/src/components/RecommendedConfigurationPTE.vue +238 -0
  566. package/src/components/Server/MachineConfig.vue +333 -0
  567. package/src/components/Server/ServerConfig.vue +599 -0
  568. package/src/components/Server/useQueryMachine.ts +380 -0
  569. package/src/components/Server/validator.ts +13 -0
  570. package/src/components/SwitchDark.vue +19 -0
  571. package/src/components/SwitchLang.vue +31 -0
  572. package/src/components/TableEmpty.vue +50 -0
  573. package/src/components/Toast/ToastNoti.vue +52 -0
  574. package/src/components/Tool/ForensicWatermarkingDialog.vue +39 -0
  575. package/src/components/Tool/FormRecord.vue +162 -0
  576. package/src/components/Tool/FormUpload.vue +118 -0
  577. package/src/components/Tool/ResultChecking.vue +103 -0
  578. package/src/components/Tool/Watermarking.vue +159 -0
  579. package/src/components/Tool/record.js +92 -0
  580. package/src/components/Tooltip/Ellipsis.vue +52 -0
  581. package/src/components/Tooltip/index.vue +47 -0
  582. package/src/components/app/AppList.vue +50 -0
  583. package/src/components/button/Button.vue +27 -0
  584. package/src/components/button/index.ts +37 -0
  585. package/src/components/context-menu/ContextMenu.vue +15 -0
  586. package/src/components/context-menu/ContextMenuCheckboxItem.vue +39 -0
  587. package/src/components/context-menu/ContextMenuContent.vue +35 -0
  588. package/src/components/context-menu/ContextMenuGroup.vue +11 -0
  589. package/src/components/context-menu/ContextMenuItem.vue +33 -0
  590. package/src/components/context-menu/ContextMenuLabel.vue +24 -0
  591. package/src/components/context-menu/ContextMenuPortal.vue +11 -0
  592. package/src/components/context-menu/ContextMenuRadioGroup.vue +19 -0
  593. package/src/components/context-menu/ContextMenuRadioItem.vue +39 -0
  594. package/src/components/context-menu/ContextMenuSeparator.vue +19 -0
  595. package/src/components/context-menu/ContextMenuShortcut.vue +13 -0
  596. package/src/components/context-menu/ContextMenuSub.vue +19 -0
  597. package/src/components/context-menu/ContextMenuSubContent.vue +34 -0
  598. package/src/components/context-menu/ContextMenuSubTrigger.vue +33 -0
  599. package/src/components/context-menu/ContextMenuTrigger.vue +13 -0
  600. package/src/components/context-menu/index.ts +14 -0
  601. package/src/components/dashboard/SSDashboardChartRoot.vue +18 -0
  602. package/src/components/dashboard/SSDashboardDocument.vue +45 -0
  603. package/src/components/dashboard/SSDashboardEmpty.vue +16 -0
  604. package/src/components/dashboard/SSDashboardGuideline.vue +45 -0
  605. package/src/components/dashboard/SSDashboardInfo.vue +36 -0
  606. package/src/components/dashboard/SSDashboardInfoRoot.vue +9 -0
  607. package/src/components/dashboard/SSDashboardInfoTime.vue +38 -0
  608. package/src/components/markdown/Markdown.vue +295 -0
  609. package/src/components/tabs/Tabs.vue +15 -0
  610. package/src/components/tabs/TabsContent.vue +22 -0
  611. package/src/components/tabs/TabsList.vue +22 -0
  612. package/src/components/tabs/TabsTrigger.vue +26 -0
  613. package/src/composables/asset.ts +13 -0
  614. package/src/composables/channel.ts +333 -0
  615. package/src/composables/country.ts +788 -0
  616. package/src/composables/error.ts +24 -0
  617. package/src/composables/form.ts +351 -0
  618. package/src/composables/getBuildTime.ts +7 -0
  619. package/src/composables/micro.ts +113 -0
  620. package/src/composables/microState.ts +22 -0
  621. package/src/composables/notiGlobal.ts +19 -0
  622. package/src/composables/plan.ts +162 -0
  623. package/src/composables/refReset.ts +12 -0
  624. package/src/composables/resetInfiniteQueryPagination.ts +18 -0
  625. package/src/composables/route.ts +19 -0
  626. package/src/composables/toast.ts +21 -0
  627. package/src/composables/useApp.ts +6 -0
  628. package/src/composables/useAsyncSchema.ts +58 -0
  629. package/src/composables/useChannelActions.ts +151 -0
  630. package/src/composables/useComplexSearchParam.ts +293 -0
  631. package/src/composables/useFilterSchema.ts +106 -0
  632. package/src/composables/useGetInputDetail.ts +36 -0
  633. package/src/composables/useGetServerAddLicense.ts +21 -0
  634. package/src/composables/useJobPreview.ts +438 -0
  635. package/src/composables/useLayoutStore.ts +106 -0
  636. package/src/composables/usePermission.ts +5 -0
  637. package/src/composables/usePickerStore.ts +53 -0
  638. package/src/composables/useQueryAssets.ts +56 -0
  639. package/src/composables/useQueryParams.ts +20 -0
  640. package/src/composables/useRouteParams.ts +36 -0
  641. package/src/composables/useRouteQueries.ts +54 -0
  642. package/src/composables/useRouterHistory.ts +76 -0
  643. package/src/composables/useSearchQuery.ts +27 -0
  644. package/src/composables/useTooltipEllipsis.ts +12 -0
  645. package/src/constants/env.ts +11 -0
  646. package/src/constants/filterable.ts +32 -0
  647. package/src/constants/languageCode.ts +185 -0
  648. package/src/constants/micro.ts +1 -0
  649. package/src/constants/queryKeys.ts +11 -0
  650. package/src/constants/regex.ts +8 -0
  651. package/src/constants/storage.ts +41 -0
  652. package/src/enums/index.ts +24 -0
  653. package/src/layouts/empty.vue +7 -0
  654. package/src/modules/api-party/kit.ts +30 -0
  655. package/src/modules/api-party/module.ts +259 -0
  656. package/src/modules/api-party/openapi.ts +74 -0
  657. package/src/modules/api-party/runtime/composables/$api.ts +157 -0
  658. package/src/modules/api-party/runtime/composables/useApiData.ts +229 -0
  659. package/src/modules/api-party/runtime/constants.ts +1 -0
  660. package/src/modules/api-party/runtime/formData.ts +85 -0
  661. package/src/modules/api-party/runtime/server/$api.ts +29 -0
  662. package/src/modules/api-party/runtime/server/handler.ts +92 -0
  663. package/src/modules/api-party/runtime/types.ts +97 -0
  664. package/src/modules/api-party/runtime/utils.ts +43 -0
  665. package/src/pages/403.vue +11 -0
  666. package/src/pages/500.vue +11 -0
  667. package/src/pages/[...all].vue +11 -0
  668. package/src/pages/login.vue +67 -0
  669. package/src/plugins/auth.ts +10 -0
  670. package/src/plugins/build-time.ts +5 -0
  671. package/src/plugins/dayjs.ts +14 -0
  672. package/src/plugins/i18n.ts +6 -0
  673. package/src/plugins/router.ts +6 -0
  674. package/src/plugins/vue-json-pretty.ts +5 -0
  675. package/src/plugins/vue-query.ts +41 -0
  676. package/src/plugins/wujie.ts +19 -0
  677. package/src/public/apple-touch-icon.png +0 -0
  678. package/src/public/audio-recorder.js +31 -0
  679. package/src/public/build-time.json +1 -0
  680. package/src/public/favicon.ico +0 -0
  681. package/src/public/icon-block-free-app.png +0 -0
  682. package/src/public/maskable-icon.png +0 -0
  683. package/src/public/nuxt.svg +3 -0
  684. package/src/public/preview/step-1.png +0 -0
  685. package/src/public/preview/step-2.png +0 -0
  686. package/src/public/preview/step-3.png +0 -0
  687. package/src/public/pwa-192x192.png +0 -0
  688. package/src/public/pwa-512x512.png +0 -0
  689. package/src/public/robots.txt +2 -0
  690. package/src/public/vite.png +0 -0
  691. package/src/pwa/config.ts +61 -0
  692. package/src/pwa/index.ts +194 -0
  693. package/src/pwa/runtime/VitePwaManifest.ts +33 -0
  694. package/src/pwa/types.ts +56 -0
  695. package/src/pwa/utils.ts +16 -0
  696. package/src/schemas/authServiceApi.json +6709 -0
  697. package/src/schemas/billingApi.json +1083 -0
  698. package/src/schemas/chatApi.json +497 -0
  699. package/src/schemas/libraryApi.json +2009 -0
  700. package/src/schemas/licenseApi.json +772 -0
  701. package/src/schemas/livestreamApi.json +3354 -0
  702. package/src/schemas/lrmApi.json +2848 -0
  703. package/src/schemas/machineApi.json +4604 -0
  704. package/src/schemas/metricApi.json +141 -0
  705. package/src/schemas/notificationApi.json +1 -0
  706. package/src/schemas/playoutApi.json +8315 -0
  707. package/src/schemas/ssaiApi.json +1108 -0
  708. package/src/schemas/transcodeApi.json +9670 -0
  709. package/src/schemas/vastControlApi.json +961 -0
  710. package/src/schemas/vodApi.json +3974 -0
  711. package/src/server/plugins/loading.css +111 -0
  712. package/src/server/plugins/loading.html +12 -0
  713. package/src/server/plugins/loading.ts +134 -0
  714. package/src/templates/pwa.client.ts +136 -0
  715. package/src/utils/$apiOptions.ts +79 -0
  716. package/src/utils/app.ts +23 -0
  717. package/src/utils/cn.ts +3 -0
  718. package/src/utils/format.ts +88 -0
  719. package/src/utils/gen-routes.ts +100 -0
  720. package/src/utils/helper.ts +56 -0
  721. package/src/utils/micro.ts +207 -0
  722. package/src/utils/popoverSelectAttrs.ts +24 -0
  723. package/src/utils/popup.ts +96 -0
  724. package/src/utils/pwa.ts +86 -0
  725. package/src/utils/query-filter.ts +111 -0
  726. package/src/utils/table.ts +35 -0
  727. package/src/utils/tryCatch.ts +25 -0
  728. package/src/utils/utils.ts +58 -0
  729. package/src/utils/validator.ts +185 -0
  730. package/src/utils/videojs.ts +490 -0
  731. package/src/utils/wujie.ts +1 -0
  732. package/tsconfig.json +3 -0
  733. package/uno.config.ts +375 -0
@@ -0,0 +1,194 @@
1
+ <script lang="ts" setup>
2
+ import type { AdvancedFilterItem } from './types'
3
+ import { createDefaultFilter } from './types'
4
+
5
+ const props = defineProps<{
6
+ disabled?: boolean
7
+ }>()
8
+
9
+ const $emit = defineEmits<{
10
+ submit: []
11
+ }>()
12
+
13
+ const modelFilters = defineModel<
14
+ Array<AdvancedFilterItem | { or: AdvancedFilterItem[] }>
15
+ >('filters', {
16
+ default: () => [],
17
+ })
18
+
19
+ function combineFilters(andFilters: AdvancedFilterItem[], orFilters: AdvancedFilterItem[]) {
20
+ const filters = [
21
+ ...andFilters,
22
+ ]
23
+ if (orFilters.length) {
24
+ filters.push({
25
+ or: orFilters,
26
+ })
27
+ }
28
+ return filters
29
+ }
30
+
31
+ const filtersAnd = ref<Array<AdvancedFilterItem>>([])
32
+ const filtersOr = ref<Array<AdvancedFilterItem>>([])
33
+
34
+ onMounted(() => {
35
+ filtersAnd.value = klona(modelFilters.value.filter(item => item.or === undefined))
36
+ const orFilters = modelFilters.value.find(item => item.or !== undefined)
37
+ filtersOr.value = orFilters?.or || []
38
+ })
39
+
40
+ watch(modelFilters, () => {
41
+ filtersAnd.value = klona(modelFilters.value.filter(item => item.or === undefined))
42
+ const orFilters = modelFilters.value.find(item => item.or !== undefined)
43
+ filtersOr.value = orFilters?.or || []
44
+ })
45
+
46
+ const { t: $t } = useI18n()
47
+ const MAX_FILTERS = 10
48
+
49
+ function addFilter(type: 'and' | 'or') {
50
+ const newFilter = createDefaultFilter()
51
+ if (type === 'and') {
52
+ filtersAnd.value.push(newFilter)
53
+ }
54
+ else {
55
+ filtersOr.value.push(newFilter)
56
+ }
57
+ }
58
+
59
+ function removeFilter(type: 'and' | 'or', id: string) {
60
+ if (type === 'and') {
61
+ filtersAnd.value = filtersAnd.value.filter(filter => filter.id !== id)
62
+ }
63
+ else {
64
+ filtersOr.value = filtersOr.value.filter(filter => filter.id !== id)
65
+ }
66
+ }
67
+
68
+ const isValid = ref(true)
69
+
70
+ const refsAnd = useTemplateRefsList()
71
+ const refsOr = useTemplateRefsList()
72
+ function validFilterAndSubmit() {
73
+ const validationsAnd = refsAnd.value.map(item => item.validateFilter())
74
+ const validationsOr = refsOr.value.map(item => item.validateFilter())
75
+
76
+ if (validationsAnd.every(item => item) && validationsOr.every(item => item)) {
77
+ modelFilters.value = combineFilters(filtersAnd.value, filtersOr.value)
78
+ $emit('submit')
79
+ isValid.value = true
80
+ }
81
+ }
82
+
83
+ function duplicateFilter(type: 'and' | 'or', filter: AdvancedFilterItem) {
84
+ const newFilter = createDefaultFilter()
85
+ const targetArray = type === 'and' ? filtersAnd : filtersOr
86
+ const index = targetArray.value.findIndex(f => f.id === filter.id)
87
+
88
+ if (index !== -1) {
89
+ targetArray.value.splice(index + 1, 0, newFilter)
90
+ }
91
+ else {
92
+ targetArray.value.push(newFilter)
93
+ }
94
+ }
95
+ </script>
96
+
97
+ <template>
98
+ <div class="relative rounded-md pl-2 space-y-4">
99
+ <!-- AND filters -->
100
+ <div
101
+ class="relative border rounded-md px-2 py-2"
102
+ :class="[
103
+ disabled ? 'bg-disabled-bg cursor-not-allowed pointer-events-none min-h-8' : 'bg-secondary',
104
+ ]"
105
+ >
106
+ <el-tag class="absolute left-0 top-0 -translate-x-2 -translate-y-2">
107
+ AND
108
+ </el-tag>
109
+
110
+ <div class="flex justify-end">
111
+ <el-button
112
+ v-if="filtersAnd.length < MAX_FILTERS && !disabled"
113
+ variant="text"
114
+ plain
115
+ type="primary"
116
+ @click="() => addFilter('and')"
117
+ >
118
+ <template #icon>
119
+ <div class="i-lucide:plus" />
120
+ </template>
121
+ <span>
122
+ {{ $t('VastControl.add_condition') }}
123
+ </span>
124
+ </el-button>
125
+ </div>
126
+
127
+ <div class="mt-1">
128
+ <SSAdvancedFilterSsaiItem
129
+ v-for="(filter, index) in filtersAnd"
130
+ :key="filter.id"
131
+ :ref="refsAnd.set"
132
+ v-model="filtersAnd[index]"
133
+ :disabled="disabled"
134
+ @remove="() => removeFilter('and', filter.id)"
135
+ @duplicate="() => duplicateFilter('and', filter)"
136
+ />
137
+ </div>
138
+ </div>
139
+
140
+ <!-- OR filters -->
141
+ <div
142
+ class="relative border rounded-md px-2 py-2"
143
+ :class="[
144
+ disabled ? 'bg-disabled-bg cursor-not-allowed pointer-events-none min-h-8' : 'bg-secondary',
145
+ ]"
146
+ >
147
+ <el-tag type="success" class="absolute left-0 top-0 -translate-x-2 -translate-y-2">
148
+ OR
149
+ </el-tag>
150
+ <div class="flex justify-end">
151
+ <el-button
152
+ v-if="filtersOr.length < MAX_FILTERS && !disabled"
153
+ variant="text"
154
+ plain
155
+ type="primary"
156
+ :disabled="disabled"
157
+ @click="() => addFilter('or')"
158
+ >
159
+ <template #icon>
160
+ <div class="i-lucide:plus" />
161
+ </template>
162
+ <span>
163
+ {{ $t('VastControl.add_condition') }}
164
+ </span>
165
+ </el-button>
166
+ </div>
167
+
168
+ <div class="mt-1">
169
+ <SSAdvancedFilterSsaiItem
170
+ v-for="(filter, index) in filtersOr"
171
+ :key="filter.id"
172
+ :ref="refsOr.set"
173
+ v-model="filtersOr[index]"
174
+ :disabled="disabled"
175
+ @remove="() => removeFilter('or', filter.id)"
176
+ @duplicate="() => duplicateFilter('or', filter)"
177
+ />
178
+ </div>
179
+ </div>
180
+ <div v-if="!disabled" class="flex justify-end">
181
+ <el-button
182
+ :disabled="!isValid"
183
+ type="primary"
184
+ plain
185
+ @click="validFilterAndSubmit()"
186
+ >
187
+ <template #icon>
188
+ <div class="i-lucide:check" />
189
+ </template>
190
+ {{ $t('VastControl.apply') }}
191
+ </el-button>
192
+ </div>
193
+ </div>
194
+ </template>
@@ -0,0 +1,19 @@
1
+ import { nanoid } from 'nanoid'
2
+
3
+ export interface AdvancedFilterItem {
4
+ id: string
5
+ valid: boolean
6
+ member: string
7
+ operator: string
8
+ values: string[]
9
+ }
10
+
11
+ export function createDefaultFilter(): AdvancedFilterItem {
12
+ return {
13
+ id: nanoid(),
14
+ valid: true,
15
+ member: '',
16
+ operator: 'equals',
17
+ values: [],
18
+ }
19
+ }
@@ -0,0 +1,169 @@
1
+ <script setup lang="ts">
2
+ import * as R from 'remeda'
3
+
4
+ const props = defineProps<{
5
+ data: any
6
+ isDisabled?: boolean
7
+ }>()
8
+
9
+ const emit = defineEmits<{
10
+ (e: 'success'): void
11
+ }>()
12
+
13
+ const visible = defineModel<boolean>('visible')
14
+
15
+ function getInitialValues() {
16
+ return {
17
+ playlistIds: [],
18
+ }
19
+ }
20
+
21
+ const { t: $t } = useI18n()
22
+ const qc = useQueryClient()
23
+
24
+ const mutation = useMutation({
25
+ mutationFn: ({ body, playListId }: { body: any, playListId: string }) => {
26
+ return $libraryApi('/api/library/playlists/{id}/items/add', {
27
+ method: 'POST',
28
+ body,
29
+ pathParams: {
30
+ id: playListId,
31
+ },
32
+ })
33
+ },
34
+ })
35
+ const enableAdd = ref(false)
36
+ const SPECIAL_CHARACTERS_NAME_SPACE = /[`!@#$%^&*()+=[\]{};':"\\|,.<>/?~]/
37
+ const CONTAIN_NAME_SPACE = /^[\w -]*$/
38
+ function validNamePlaylist(value: string) {
39
+ if (!value.trim()) {
40
+ ElMessage.error($t('base.cannot_contain_all_space', { name: 'Name Playlist' }))
41
+ return false
42
+ }
43
+ else if (SPECIAL_CHARACTERS_NAME_SPACE.test(value)) {
44
+ ElMessage.error($t('base.name_can_not_special_characters', { name: 'Name Playlist' }))
45
+ return false
46
+ }
47
+ else if (!CONTAIN_NAME_SPACE.test(value)) {
48
+ ElMessage.error($t('base.name_cannot_contain_accented_characters', { name: 'Name Playlist' }))
49
+ return false
50
+ }
51
+ else {
52
+ return true
53
+ }
54
+ }
55
+ function checkPlaylists(lists: string[]) {
56
+ return !lists.some(value => !validNamePlaylist(value))
57
+ }
58
+ const { formRef, formValue, handleSubmit, handleValidate, register, formErrors } = useElForm({
59
+ initialValues: getInitialValues(),
60
+ async onSubmit(values) {
61
+ enableAdd.value = checkPlaylists(values.playlistIds)
62
+ if (enableAdd.value) {
63
+ const promises = values.playlistIds.map(async (playlistId: string) => {
64
+ await mutation.mutateAsync({
65
+ body: {
66
+ assetIds: props.data.map((item: any) => item.id),
67
+ },
68
+ playListId: playlistId,
69
+ })
70
+ })
71
+
72
+ await Promise.all(promises)
73
+ ElNotification.success($t('library.add_assets_to_playlist_successfully'))
74
+ emit('success')
75
+ }
76
+ },
77
+ })
78
+
79
+ function getProp(path: string) {
80
+ return path
81
+ }
82
+ const [playlistIdsValue, playlistIdsAttrs] = register<string[]>(getProp('playlistIds'), [{
83
+ required: true,
84
+ trigger: ['blur', 'change'],
85
+ validator: (rule, value, callback) => {
86
+ if (!value.length)
87
+ callback(new Error($t('base.please_select_at_least_one_playlist')))
88
+ else
89
+ callback()
90
+ },
91
+ }])
92
+
93
+ function handleClose(done: () => void) {
94
+ if (!R.equals(formValue.value, getInitialValues())) {
95
+ ElMessageBox.confirm($t('library.are_you_sure_you_want_to_close_this'), $t('message.Warning'), {
96
+ type: 'warning',
97
+ })
98
+ .then(() => {
99
+ formValue.value = getInitialValues()
100
+ done()
101
+ })
102
+ .catch(() => {
103
+ // catch error
104
+ })
105
+ }
106
+ else {
107
+ formValue.value = getInitialValues()
108
+ done()
109
+ }
110
+ }
111
+
112
+ const isLoading = computed(() => false)
113
+ </script>
114
+
115
+ <template>
116
+ <el-dialog
117
+ v-model="visible"
118
+ center
119
+ :title="$t('library.add_asset_to_playlist')"
120
+ width="700px"
121
+ :before-close="handleClose"
122
+ >
123
+ <el-form
124
+ ref="formRef"
125
+ :model="formValue"
126
+ label-position="left"
127
+ label-width="120px"
128
+ @validate="handleValidate"
129
+ >
130
+ <div class="text-sm text-text-primary font-bold">
131
+ Assets ({{ data.length }})
132
+ </div>
133
+ <div class="grid grid-cols-1 max-h-500px items-start gap-x-4 gap-y-2 of-y-auto py-5">
134
+ <template v-for="(item, i) in data" :key="item.id">
135
+ <div class="flex gap-2 border border-border rounded px-2 py-2">
136
+ <div class="i-ri:file-2-line mt-1 size-5 flex-shrink-0" />
137
+ <div class="min-w-0 w-full flex gap-2">
138
+ <p class="mt-1 flex-grow-1 break-all text-sm">
139
+ <span class="line-clamp-1">
140
+ {{ item.name }}
141
+ </span>
142
+ </p>
143
+ <div v-if="item.metadata?.size" class="flex-shrink-0">
144
+ {{ formatFileSize(item.metadata?.size || 0) }}
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </template>
149
+ </div>
150
+
151
+ <el-form-item label="Playlist" class="mt-3" v-bind="playlistIdsAttrs">
152
+ <SSAssetPlaylistInfiniteSelect v-model="playlistIdsValue" :multiple-limit="20" />
153
+ </el-form-item>
154
+ </el-form>
155
+ <span class="mt-5 flex justify-end">
156
+ <el-button :disabled="isDisabled" @click="handleClose(() => visible = false)">
157
+ {{ $t('base.cancel') }}
158
+ </el-button>
159
+ <el-button
160
+ :disabled="isDisabled"
161
+ type="primary"
162
+ :loading="isLoading"
163
+ @click="handleSubmit"
164
+ >
165
+ {{ $t('general.submit') }}
166
+ </el-button>
167
+ </span>
168
+ </el-dialog>
169
+ </template>
@@ -0,0 +1,46 @@
1
+ <script lang="ts" setup>
2
+ const props = defineProps<{
3
+ item: Asset
4
+ disabled?: boolean
5
+ }>()
6
+ const emit = defineEmits(['select'])
7
+ const type = computed(() => props.item.type!)
8
+
9
+ const audio = ref()
10
+ const { playing, muted } = useMediaControls(audio, {
11
+ src: props.item.uri,
12
+ })
13
+
14
+ function onPlay() {
15
+ playing.value = !playing.value
16
+ }
17
+
18
+ const { selectable } = useAssetStore()
19
+ const { t } = useI18n()
20
+ </script>
21
+
22
+ <template>
23
+ <div v-if="selectable">
24
+ <el-tooltip
25
+ class="box-item"
26
+ effect="dark"
27
+ :content="t('select')"
28
+ placement="top"
29
+ >
30
+ <el-button :disabled="disabled" type="primary" circle @click="emit('select', item)">
31
+ <div class="i-carbon:checkmark" />
32
+ </el-button>
33
+ </el-tooltip>
34
+ </div>
35
+ </template>
36
+
37
+ <i18n lang="yaml">
38
+ en:
39
+ select: Select
40
+ play: Play
41
+ pause: Pause
42
+ vi:
43
+ select: Chọn
44
+ play: Bật
45
+ pause: Dừng
46
+ </i18n>
@@ -0,0 +1,281 @@
1
+ <script setup lang="ts">
2
+ import type { FormInstance, FormRules } from 'element-plus'
3
+ import * as R from 'remeda'
4
+ import { klona } from 'klona'
5
+
6
+ const props = defineProps<{
7
+ visible: boolean
8
+ server: any
9
+ }>()
10
+
11
+ const visible = useVModel(props, 'visible')
12
+
13
+ const inputValue = ref('')
14
+ const formDefault = reactive({
15
+ playlistIds: [],
16
+ tags: [],
17
+ category: 'Promo Video',
18
+ expire: null,
19
+ source: {
20
+ type: 'http',
21
+ httpPayload: {
22
+ urls: [],
23
+ },
24
+ },
25
+ })
26
+
27
+ const form = reactive(klona(formDefault))
28
+
29
+ const categories = computed(() => [
30
+ 'Promo Video',
31
+ 'Film',
32
+ 'Video Short',
33
+ 'Podcast',
34
+ 'Series',
35
+ 'Sport Clip',
36
+ 'Song',
37
+ 'Voice Over',
38
+ 'Graphics File',
39
+ 'Presentation',
40
+ ])
41
+
42
+ const formRef = ref<FormInstance>()
43
+ const rules = ref<FormRules>({
44
+ tags: [{
45
+ trigger: ['blur', 'change'],
46
+ validator: tagValidator(35),
47
+ }],
48
+ })
49
+
50
+ function handleInput() {
51
+ const link = inputValue.value.split('\n')
52
+ form.source.httpPayload.urls = link
53
+ }
54
+
55
+ const formattedLinks = computed(() => {
56
+ return form.source.httpPayload.urls
57
+ .map((link, index) => {
58
+ if (!link) {
59
+ return `<span style="color: red;">${index + 1}. ${link || $t('please_enter_link')}</span>`
60
+ }
61
+ return `${index + 1}. ${link}`
62
+ })
63
+ .join('\n')
64
+ })
65
+
66
+ const inValidUrl = computed(() => {
67
+ return form.source.httpPayload.urls.some(item => item === '' || item === undefined) as boolean
68
+ })
69
+
70
+ const quantityLinkInvalid = computed(() => {
71
+ return form?.source?.httpPayload?.urls.filter(link => link === '' || link === undefined).length || 0
72
+ })
73
+
74
+ watch(() => form.source.httpPayload.urls, () => {
75
+ if (form.source.httpPayload.urls.length > 100) {
76
+ ElMessage.error($t('do_not_exceed_100_links_links'))
77
+ }
78
+ }, { deep: true })
79
+
80
+ const qc = useQueryClient()
81
+ const createMutation = useMutation(
82
+ (createAsset: any) =>
83
+ $libraryApi('/api/library/assets', {
84
+ method: 'POST',
85
+ body: createAsset,
86
+ }),
87
+ {
88
+ onSuccess: () => {
89
+ qc.invalidateQueries(['api/library/assets'])
90
+ },
91
+ },
92
+ )
93
+
94
+ const enableAdd = ref(false)
95
+ const SPECIAL_CHARACTERS_NAME_SPACE = /[`!@#$%^&*()+=[\]{};':"\\|,.<>/?~]/
96
+ const CONTAIN_NAME_SPACE = /^[\w -]*$/
97
+ function validNamePlaylist(value) {
98
+ if (!value.trim()) {
99
+ ElMessage.error($t('base.cannot_contain_all_space', { name: 'Name Playlist' }))
100
+ return false
101
+ }
102
+ else if (SPECIAL_CHARACTERS_NAME_SPACE.test(value)) {
103
+ ElMessage.error($t('base.name_can_not_special_characters', { name: 'Name Playlist' }))
104
+ return false
105
+ }
106
+ else if (!CONTAIN_NAME_SPACE.test(value)) {
107
+ ElMessage.error($t('base.name_cannot_contain_accented_characters', { name: 'Name Playlist' }))
108
+ return false
109
+ }
110
+ else {
111
+ return true
112
+ }
113
+ }
114
+
115
+ function checkPlaylists(lists) {
116
+ return !lists.some(value => !validNamePlaylist(value))
117
+ }
118
+ async function createAssetWithLinks(formEl: FormInstance | undefined) {
119
+ enableAdd.value = checkPlaylists(form.playlistIds)
120
+ if (!formEl)
121
+ return
122
+ await formEl.validate(async (valid, fields) => {
123
+ if (valid && enableAdd.value) {
124
+ if (form?.source?.httpPayload?.urls?.length === 0) {
125
+ ElMessage.error($t('urls_required'))
126
+ }
127
+ else {
128
+ if (quantityLinkInvalid.value === 0) {
129
+ await createMutation.mutateAsync({
130
+ ...form,
131
+ expire: form.expire ? form.expire * 24 * 60 * 60 : null,
132
+ })
133
+ ElMessage.success($t('Asset.upload_success'))
134
+ visible.value = false
135
+ }
136
+ else {
137
+ ElMessage.error($t('an_invalid_link_exists'))
138
+ }
139
+ }
140
+ }
141
+ })
142
+ }
143
+ const hasExpiration = ref(false)
144
+
145
+ watch(hasExpiration, (newValue) => {
146
+ form.expire = newValue ? 365 : null
147
+ })
148
+
149
+ function handleClose() {
150
+ if (!R.equals(form, formDefault)) {
151
+ ElMessageBox.confirm(
152
+ $t('are_you_sure_you_want_to_cancel_import_from_links'),
153
+ $t('Warning'),
154
+ {
155
+ confirmButtonText: $t('Actions.ok'),
156
+ cancelButtonText: $t('Actions.cancel'),
157
+ type: 'warning',
158
+ },
159
+ )
160
+ .then(() => {
161
+ visible.value = false
162
+ hasExpiration.value = false
163
+ })
164
+ }
165
+ else {
166
+ visible.value = false
167
+ }
168
+ }
169
+ </script>
170
+
171
+ <template>
172
+ <el-dialog
173
+ v-model="visible"
174
+ width="600"
175
+ align-center
176
+ :before-close="handleClose"
177
+ >
178
+ <template #header>
179
+ <div class="text-xl font-bold">
180
+ {{ $t('add_media_from_links') }}
181
+ </div>
182
+ <p class="text-sm">
183
+ {{ $t('add_video_just_paste_links_your_video_below_link_format') }}
184
+ </p>
185
+ </template>
186
+ <el-form
187
+ ref="formRef"
188
+ :model="form"
189
+ label-width="auto"
190
+ :rules="rules"
191
+ style="max-width: 600px"
192
+ label-position="left"
193
+ >
194
+ <el-form-item :label="$t('name_playlist')">
195
+ <SSAssetPlaylistInfiniteSelect v-model="form.playlistIds" />
196
+ </el-form-item>
197
+
198
+ <el-form-item :label="$t('label.tag')" prop="tags">
199
+ <SSInputTags v-model="form.tags" :max-item="10" class="w-full" />
200
+ </el-form-item>
201
+ <el-form-item label="Category">
202
+ <el-select v-model="form.category" placeholder="Select">
203
+ <el-option
204
+ v-for="item in categories"
205
+ :key="item"
206
+ :label="item"
207
+ :value="item"
208
+ />
209
+ </el-select>
210
+ </el-form-item>
211
+ <el-form-item label="Expiration">
212
+ <div class="flex items-center gap-2">
213
+ <el-switch v-model="hasExpiration" />
214
+ <template v-if="hasExpiration">
215
+ <el-input-number
216
+ v-model="form.expire"
217
+ :min="1"
218
+ :max="365"
219
+ :step="1"
220
+ step-strictly
221
+ controls-position="right"
222
+ :clearable="true"
223
+ />
224
+ <span class="ml-2 text-sm">
225
+ Days
226
+ </span>
227
+ </template>
228
+ </div>
229
+ </el-form-item>
230
+
231
+ <div class="pb-4 font-bold">
232
+ Total: {{ form?.source?.httpPayload?.urls?.length || 0 }} {{ $t('links') }} | {{ (form?.source?.httpPayload?.urls?.length - quantityLinkInvalid) || 0 }} {{ $t('links_valid') }} - {{ quantityLinkInvalid || 0 }} {{ $t('link_invalid') }}
233
+ </div>
234
+ <el-form-item label="Links">
235
+ <el-input
236
+ v-model="inputValue"
237
+ class="![&_.el-textarea\_\_inner]:h-200px"
238
+ :autosize="{ minRows: 2, maxRows: 6 }"
239
+ type="textarea"
240
+ :placeholder="$t('please_input_links')"
241
+ @input="handleInput"
242
+ />
243
+ </el-form-item>
244
+ <el-form-item label="Formatted Links">
245
+ <template #label>
246
+ <div class="font-bold" :class="{ 'text-red': inValidUrl }">
247
+ {{ $t('formatted_links') }}
248
+ </div>
249
+ </template>
250
+ <div class="h-180px w-full border-1px rounded-sm">
251
+ <el-scrollbar max-height="180px" class="w-full p-2">
252
+ <div class="formatted-url w-full" v-html="formattedLinks" />
253
+ </el-scrollbar>
254
+ </div>
255
+ </el-form-item>
256
+ </el-form>
257
+ <template #footer>
258
+ <div class="dialog-footer">
259
+ <el-button @click="handleClose">
260
+ {{ $t('Actions.cancel') }}
261
+ </el-button>
262
+ <el-button type="primary" @click="createAssetWithLinks(formRef)">
263
+ {{ $t('Actions.submit') }}
264
+ </el-button>
265
+ </div>
266
+ </template>
267
+ </el-dialog>
268
+ </template>
269
+
270
+ <style scoped>
271
+ :deep(.el-dialog__header) {
272
+ padding-right: 0 !important;
273
+ }
274
+
275
+ .formatted-url {
276
+ white-space: pre-wrap;
277
+ padding-bottom: 4px;
278
+ border-radius: 4px;
279
+ line-height: normal;
280
+ }
281
+ </style>