@sigmaott/base-library-next 2.2.6 → 2.2.8

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 (63) hide show
  1. package/.npmrc +3 -0
  2. package/locales/en.yaml +289 -289
  3. package/locales/vi.yaml +294 -294
  4. package/nuxt.config.ts +18 -18
  5. package/package.json +32 -33
  6. package/public/routes.json +33 -33
  7. package/src/api/axios.ts +3 -3
  8. package/src/api/index.ts +86 -86
  9. package/src/api-client-library/.openapi-generator/FILES +20 -20
  10. package/src/api-client-library/.openapi-generator-ignore +23 -23
  11. package/src/api-client-library/api/health-api.ts +119 -119
  12. package/src/api-client-library/api/presets-api.ts +599 -599
  13. package/src/api-client-library/api/profiles-api.ts +676 -676
  14. package/src/api-client-library/api.ts +20 -20
  15. package/src/api-client-library/base.ts +72 -72
  16. package/src/api-client-library/common.ts +150 -150
  17. package/src/api-client-library/configuration.ts +101 -101
  18. package/src/api-client-library/git_push.sh +57 -57
  19. package/src/api-client-library/index.ts +18 -18
  20. package/src/api-client-library/models/create-preset-dto.ts +223 -223
  21. package/src/api-client-library/models/create-profile-dto.ts +45 -45
  22. package/src/api-client-library/models/health-controller-get-health200-response-info-value.ts +32 -32
  23. package/src/api-client-library/models/health-controller-get-health200-response.ts +51 -51
  24. package/src/api-client-library/models/health-controller-get-health503-response.ts +51 -51
  25. package/src/api-client-library/models/index.ts +7 -7
  26. package/src/api-client-library/models/update-preset-dto.ts +223 -223
  27. package/src/api-client-library/models/update-profile-dto.ts +45 -45
  28. package/src/components/MediaSelection.vue +40 -40
  29. package/src/components/PresetModify.vue +154 -154
  30. package/src/components/PresetTable.vue +114 -114
  31. package/src/components/ProfileAllList.vue +137 -137
  32. package/src/components/ProfileFormModal.vue +79 -79
  33. package/src/components/ProfileModify.vue +152 -152
  34. package/src/components/ProfileTable.vue +68 -68
  35. package/src/components/WatermarkDraggableItem.vue +88 -88
  36. package/src/components/channel/ConfigWatermarkItem.vue +239 -239
  37. package/src/components/channel/WatermarkPreview.vue +19 -19
  38. package/src/components/common/Vue3DraggableResizable/Container.vue +71 -71
  39. package/src/components/common/Vue3DraggableResizable/index.vue +1327 -1327
  40. package/src/components/common/Vue3DraggableResizable/utils/dom.js +63 -63
  41. package/src/components/common/Vue3DraggableResizable/utils/fns.js +37 -37
  42. package/src/components/common/VueDraggableResizable/dom.js +63 -63
  43. package/src/components/common/VueDraggableResizable/fns.js +37 -37
  44. package/src/components/common/VueDraggableResizable/index.vue +958 -958
  45. package/src/components/preset/ConfigItem.vue +956 -956
  46. package/src/components/profile/ConfigItem.vue +765 -765
  47. package/src/components/profile/TableColumns.vue +137 -137
  48. package/src/components/shared/AudioInfoViewer.vue +101 -101
  49. package/src/components/shared/MediaInfoViewer.vue +257 -249
  50. package/src/components/shared/MediaInfoViewerSmall.vue +105 -105
  51. package/src/components/shared/PopoverProfile.vue +17 -17
  52. package/src/components/shared/VideoInfoViewer.vue +136 -136
  53. package/src/components/shared/fileSizeFilter.ts +26 -26
  54. package/src/composables/preset.ts +141 -141
  55. package/src/public/build-time.json +1 -1
  56. package/src/public/favicon.svg +15 -15
  57. package/src/public/logo.svg +9 -9
  58. package/src/public/routes.json +86 -86
  59. package/src/utils/common.ts +175 -175
  60. package/src/utils/config.ts +19 -19
  61. package/src/utils/preset.ts +353 -353
  62. package/src/utils/profile.ts +30 -30
  63. package/tsconfig.json +3 -3
@@ -1,137 +1,137 @@
1
- <script lang="ts" setup>
2
-
3
- </script>
4
-
5
- <template>
6
- <el-table-column :label="$t('profile.name')" prop="name" width="250" show-overflow-tooltip sortable>
7
- <template #default="scope">
8
- {{ scope.row.name }}
9
- </template>
10
- </el-table-column>
11
- <el-table-column label="Video" prop="video" width="515">
12
- <template #default="scope">
13
- <el-scrollbar max-height="135px" class="pr-4px">
14
- <SharedMediaInfoViewer
15
- v-for="(item, idx) in scope.row.video || []" :key="idx" :media="item"
16
- class="w-96% justify-center"
17
- />
18
- </el-scrollbar>
19
- <!-- <SharedPopoverProfile :media="scope.row.video" /> -->
20
- </template>
21
- </el-table-column>
22
- <el-table-column label="Audio" prop="audio" min-width="350">
23
- <template #default="scope">
24
- <div v-if="scope.row?.audio?.length === 0" class="text-center" style="color: #97a8be; margin-left: 8px">
25
- No Item
26
- </div>
27
-
28
- <div v-else class="flex gap-2px">
29
- <template v-for="(item) in scope.row.audio?.slice(0, 2) || []" :key="item.id">
30
- <div v-if="scope.row.audio?.length > 2" class="item-list-row max-w-150px flex items-center gap-1">
31
- <div class="i-ep:headset min-w-14px text-primary" />
32
- <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
33
- </div>
34
- <el-popover
35
- v-else
36
- placement="bottom"
37
- trigger="hover"
38
- :width="500"
39
- >
40
- <template #reference>
41
- <div class="item-list-row max-w-150px flex items-center gap-1">
42
- <div class="i-ep:headset min-w-14px text-primary" />
43
- <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
44
- </div>
45
- </template>
46
- <el-scrollbar>
47
- <SharedMediaInfoViewer
48
- v-for="(i, idx) in scope.row.audio || []" :key="idx" class="w-96% justify-center"
49
- :media="i"
50
- />
51
- </el-scrollbar>
52
- </el-popover>
53
- </template>
54
- <el-popover
55
- v-if="scope.row.audio?.length > 2"
56
- placement="bottom"
57
- trigger="hover"
58
- :width="500"
59
- >
60
- <template #reference>
61
- <span class="item-list-row">
62
- ...
63
- </span>
64
- </template>
65
- <el-scrollbar height="200px">
66
- <SharedMediaInfoViewer
67
- v-for="(i, idx) in scope.row.audio || []" :key="idx" class="w-96% justify-center"
68
- :media="i"
69
- />
70
- </el-scrollbar>
71
- </el-popover>
72
- <!-- <SharedPopoverProfile :media="scope.row.audio" /> -->
73
- </div>
74
- </template>
75
- </el-table-column>
76
- <el-table-column label="Data" prop="data" min-width="350">
77
- <template #default="scope">
78
- <div v-if="scope.row?.data?.length === 0" class="text-center" style="color: #97a8be; margin-left: 8px">
79
- No Item
80
- </div>
81
- <div v-else class="flex gap-2px">
82
- <template v-for="(item) in scope.row.data?.slice(0, 2) || []" :key="item.id">
83
- <div v-if="scope.row.data?.length > 2" class="item-list-row max-w-150px flex items-center gap-1">
84
- <div class="i-ep:menu min-w-14px text-primary" />
85
- <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
86
- </div>
87
- <el-popover
88
- v-else
89
- placement="bottom"
90
- trigger="hover"
91
- :width="500"
92
- >
93
- <template #reference>
94
- <div class="item-list-row max-w-150px flex items-center gap-1">
95
- <div class="i-ep:menu min-w-14px text-primary" />
96
- <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
97
- </div>
98
- </template>
99
- <el-scrollbar>
100
- <SharedMediaInfoViewer
101
- v-for="(i, idx) in scope.row.data || []" :key="idx" class="w-96% justify-center"
102
- :media="i"
103
- />
104
- </el-scrollbar>
105
- </el-popover>
106
- </template>
107
- <el-popover
108
- v-if="scope.row.data?.length > 2"
109
- placement="bottom"
110
- trigger="hover"
111
- :width="500"
112
- >
113
- <template #reference>
114
- <span class="item-list-row">
115
- ...
116
- </span>
117
- </template>
118
- <el-scrollbar height="200px">
119
- <SharedMediaInfoViewer
120
- v-for="(i, idx) in scope.row.data || []" :key="idx" class="w-96% justify-center"
121
- :media="i"
122
- />
123
- </el-scrollbar>
124
- </el-popover>
125
- </div>
126
- </template>
127
- </el-table-column>
128
- </template>
129
-
130
- <style scoped>
131
- .item-list-row {
132
- padding: 5px;
133
- position: relative;
134
- border: 1px solid rgba(64, 158, 255, 0.4);
135
- border-radius: 4px;
136
- }
137
- </style>
1
+ <script lang="ts" setup>
2
+
3
+ </script>
4
+
5
+ <template>
6
+ <el-table-column :label="$t('profile.name')" prop="name" width="250" show-overflow-tooltip sortable>
7
+ <template #default="scope">
8
+ {{ scope.row.name }}
9
+ </template>
10
+ </el-table-column>
11
+ <el-table-column label="Video" prop="video" width="515">
12
+ <template #default="scope">
13
+ <el-scrollbar max-height="135px" class="pr-4px">
14
+ <SharedMediaInfoViewer
15
+ v-for="(item, idx) in scope.row.video || []" :key="idx" :media="item"
16
+ class="w-96% justify-center"
17
+ />
18
+ </el-scrollbar>
19
+ <!-- <SharedPopoverProfile :media="scope.row.video" /> -->
20
+ </template>
21
+ </el-table-column>
22
+ <el-table-column label="Audio" prop="audio" min-width="350">
23
+ <template #default="scope">
24
+ <div v-if="scope.row?.audio?.length === 0" class="text-center" style="color: #97a8be; margin-left: 8px">
25
+ No Item
26
+ </div>
27
+
28
+ <div v-else class="flex gap-2px">
29
+ <template v-for="(item) in scope.row.audio?.slice(0, 2) || []" :key="item.id">
30
+ <div v-if="scope.row.audio?.length > 2" class="item-list-row max-w-150px flex items-center gap-1">
31
+ <div class="i-ep:headset min-w-14px text-primary" />
32
+ <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
33
+ </div>
34
+ <el-popover
35
+ v-else
36
+ placement="bottom"
37
+ trigger="hover"
38
+ :width="500"
39
+ >
40
+ <template #reference>
41
+ <div class="item-list-row max-w-150px flex items-center gap-1">
42
+ <div class="i-ep:headset min-w-14px text-primary" />
43
+ <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
44
+ </div>
45
+ </template>
46
+ <el-scrollbar>
47
+ <SharedMediaInfoViewer
48
+ v-for="(i, idx) in scope.row.audio || []" :key="idx" class="w-96% justify-center"
49
+ :media="i"
50
+ />
51
+ </el-scrollbar>
52
+ </el-popover>
53
+ </template>
54
+ <el-popover
55
+ v-if="scope.row.audio?.length > 2"
56
+ placement="bottom"
57
+ trigger="hover"
58
+ :width="500"
59
+ >
60
+ <template #reference>
61
+ <span class="item-list-row">
62
+ ...
63
+ </span>
64
+ </template>
65
+ <el-scrollbar height="200px">
66
+ <SharedMediaInfoViewer
67
+ v-for="(i, idx) in scope.row.audio || []" :key="idx" class="w-96% justify-center"
68
+ :media="i"
69
+ />
70
+ </el-scrollbar>
71
+ </el-popover>
72
+ <!-- <SharedPopoverProfile :media="scope.row.audio" /> -->
73
+ </div>
74
+ </template>
75
+ </el-table-column>
76
+ <el-table-column label="Data" prop="data" min-width="350">
77
+ <template #default="scope">
78
+ <div v-if="scope.row?.data?.length === 0" class="text-center" style="color: #97a8be; margin-left: 8px">
79
+ No Item
80
+ </div>
81
+ <div v-else class="flex gap-2px">
82
+ <template v-for="(item) in scope.row.data?.slice(0, 2) || []" :key="item.id">
83
+ <div v-if="scope.row.data?.length > 2" class="item-list-row max-w-150px flex items-center gap-1">
84
+ <div class="i-ep:menu min-w-14px text-primary" />
85
+ <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
86
+ </div>
87
+ <el-popover
88
+ v-else
89
+ placement="bottom"
90
+ trigger="hover"
91
+ :width="500"
92
+ >
93
+ <template #reference>
94
+ <div class="item-list-row max-w-150px flex items-center gap-1">
95
+ <div class="i-ep:menu min-w-14px text-primary" />
96
+ <SSTooltipEllipsis :content="item.name" :line-clamp="1" />
97
+ </div>
98
+ </template>
99
+ <el-scrollbar>
100
+ <SharedMediaInfoViewer
101
+ v-for="(i, idx) in scope.row.data || []" :key="idx" class="w-96% justify-center"
102
+ :media="i"
103
+ />
104
+ </el-scrollbar>
105
+ </el-popover>
106
+ </template>
107
+ <el-popover
108
+ v-if="scope.row.data?.length > 2"
109
+ placement="bottom"
110
+ trigger="hover"
111
+ :width="500"
112
+ >
113
+ <template #reference>
114
+ <span class="item-list-row">
115
+ ...
116
+ </span>
117
+ </template>
118
+ <el-scrollbar height="200px">
119
+ <SharedMediaInfoViewer
120
+ v-for="(i, idx) in scope.row.data || []" :key="idx" class="w-96% justify-center"
121
+ :media="i"
122
+ />
123
+ </el-scrollbar>
124
+ </el-popover>
125
+ </div>
126
+ </template>
127
+ </el-table-column>
128
+ </template>
129
+
130
+ <style scoped>
131
+ .item-list-row {
132
+ padding: 5px;
133
+ position: relative;
134
+ border: 1px solid rgba(64, 158, 255, 0.4);
135
+ border-radius: 4px;
136
+ }
137
+ </style>
@@ -1,101 +1,101 @@
1
- <script lang="ts" setup>
2
- import { fileSizeFilter } from './fileSizeFilter'
3
-
4
- defineProps<{
5
- audio: any
6
- }>()
7
- </script>
8
-
9
- <template>
10
- <div class="item-list-row flex justify-center">
11
- <ul class="flex flex-wrap justify-center">
12
- <li>
13
- <el-icon>
14
- <div class="i-ep:headset text-primary" />
15
- </el-icon>
16
- <el-icon v-if="audio.codec === 'copy'" class="text-indigo-500" name="document-copy">
17
- <div class="i-ep:document-copy text-indigo-500" />
18
- </el-icon>&nbsp;
19
- <span class="item__name" :title="audio.name">{{
20
- (audio && audio.name) || '-'
21
- }}</span>
22
- </li>
23
- <span class="text-gray-400">&nbsp;|&nbsp;</span>
24
- <li title="Codec">
25
- <el-icon>
26
- <div class="i-ep:grid text-indigo-500" />
27
- </el-icon>&nbsp;
28
- <span class="item__name">{{ audio.codec }}</span>
29
- </li>
30
- <span class="text-gray-400">&nbsp;|&nbsp;</span>
31
- <li title="Bitrate">
32
- <el-icon>
33
- <div class="i-ep:scale-to-original text-teal-600" />
34
- </el-icon>&nbsp;
35
- <span>{{ audio.bitrate ? fileSizeFilter(audio.bitrate) : fileSizeFilter(audio.audioBitrate) }}/s</span>
36
- </li>
37
- <span class="text-gray-400">&nbsp;|&nbsp;</span>
38
- <li title="Sample rate">
39
- <el-icon>
40
- <div class="i-ep:message-box text-indigo-500" />
41
- </el-icon>&nbsp;
42
- <span>{{ audio.sampleRate || '-' }}</span>
43
- </li>
44
- <span class="text-gray-400">&nbsp;|&nbsp;</span>
45
- <li title="Profile">
46
- <el-icon>
47
- <div class="i-ep:credit-card" :class="!audio.profile || 'text-teal-600'" />
48
- </el-icon>&nbsp;
49
- <span>{{ audio.profile || '-' }}</span>
50
- </li>
51
- <span class="text-gray-400">&nbsp;|&nbsp;</span>
52
- <li title="Channel">
53
- <el-icon>
54
- <div class="i-ep:scale-to-original text-teal-600" />
55
- </el-icon>&nbsp;
56
- <span>{{ audio.channel || '-' }}</span>
57
- </li>
58
- </ul>
59
-
60
- <div v-if="$slots && $slots.anchor" class="anchor">
61
- <slot name="anchor" />
62
- </div>
63
- </div>
64
- </template>
65
-
66
- <style lang="scss" scoped>
67
- .item-list-row {
68
- margin: 5px;
69
- padding: 5px;
70
- position: relative;
71
- border: 1px solid rgba(230, 162, 60, 0.4);
72
- border-radius: 4px;
73
-
74
- ul {
75
- li {
76
- white-space: nowrap;
77
- display: flex;
78
- align-items: center;
79
- }
80
-
81
- .item__name {
82
- max-width: 85px;
83
- overflow: hidden;
84
- white-space: nowrap;
85
- text-overflow: ellipsis;
86
- }
87
- }
88
-
89
- .anchor {
90
- padding: 5px;
91
- margin: -5px -5px -5px 5px;
92
- display: flex;
93
- flex-direction: column;
94
- border-left: 1px solid;
95
- border-color: inherit;
96
- background-color: rgba(230, 162, 60, 0.2);
97
- border-top-right-radius: inherit;
98
- border-bottom-right-radius: inherit;
99
- }
100
- }
101
- </style>
1
+ <script lang="ts" setup>
2
+ import { fileSizeFilter } from './fileSizeFilter'
3
+
4
+ defineProps<{
5
+ audio: any
6
+ }>()
7
+ </script>
8
+
9
+ <template>
10
+ <div class="item-list-row flex justify-center">
11
+ <ul class="flex flex-wrap justify-center">
12
+ <li>
13
+ <el-icon>
14
+ <div class="i-ep:headset text-primary" />
15
+ </el-icon>
16
+ <el-icon v-if="audio.codec === 'copy'" class="text-indigo-500" name="document-copy">
17
+ <div class="i-ep:document-copy text-indigo-500" />
18
+ </el-icon>&nbsp;
19
+ <span class="item__name" :title="audio.name">{{
20
+ (audio && audio.name) || '-'
21
+ }}</span>
22
+ </li>
23
+ <span class="text-gray-400">&nbsp;|&nbsp;</span>
24
+ <li title="Codec">
25
+ <el-icon>
26
+ <div class="i-ep:grid text-indigo-500" />
27
+ </el-icon>&nbsp;
28
+ <span class="item__name">{{ audio.codec }}</span>
29
+ </li>
30
+ <span class="text-gray-400">&nbsp;|&nbsp;</span>
31
+ <li title="Bitrate">
32
+ <el-icon>
33
+ <div class="i-ep:scale-to-original text-teal-600" />
34
+ </el-icon>&nbsp;
35
+ <span>{{ audio.bitrate ? fileSizeFilter(audio.bitrate) : fileSizeFilter(audio.audioBitrate) }}/s</span>
36
+ </li>
37
+ <span class="text-gray-400">&nbsp;|&nbsp;</span>
38
+ <li title="Sample rate">
39
+ <el-icon>
40
+ <div class="i-ep:message-box text-indigo-500" />
41
+ </el-icon>&nbsp;
42
+ <span>{{ audio.sampleRate || '-' }}</span>
43
+ </li>
44
+ <span class="text-gray-400">&nbsp;|&nbsp;</span>
45
+ <li title="Profile">
46
+ <el-icon>
47
+ <div class="i-ep:credit-card" :class="!audio.profile || 'text-teal-600'" />
48
+ </el-icon>&nbsp;
49
+ <span>{{ audio.profile || '-' }}</span>
50
+ </li>
51
+ <span class="text-gray-400">&nbsp;|&nbsp;</span>
52
+ <li title="Channel">
53
+ <el-icon>
54
+ <div class="i-ep:scale-to-original text-teal-600" />
55
+ </el-icon>&nbsp;
56
+ <span>{{ audio.channel || '-' }}</span>
57
+ </li>
58
+ </ul>
59
+
60
+ <div v-if="$slots && $slots.anchor" class="anchor">
61
+ <slot name="anchor" />
62
+ </div>
63
+ </div>
64
+ </template>
65
+
66
+ <style lang="scss" scoped>
67
+ .item-list-row {
68
+ margin: 5px;
69
+ padding: 5px;
70
+ position: relative;
71
+ border: 1px solid rgba(230, 162, 60, 0.4);
72
+ border-radius: 4px;
73
+
74
+ ul {
75
+ li {
76
+ white-space: nowrap;
77
+ display: flex;
78
+ align-items: center;
79
+ }
80
+
81
+ .item__name {
82
+ max-width: 85px;
83
+ overflow: hidden;
84
+ white-space: nowrap;
85
+ text-overflow: ellipsis;
86
+ }
87
+ }
88
+
89
+ .anchor {
90
+ padding: 5px;
91
+ margin: -5px -5px -5px 5px;
92
+ display: flex;
93
+ flex-direction: column;
94
+ border-left: 1px solid;
95
+ border-color: inherit;
96
+ background-color: rgba(230, 162, 60, 0.2);
97
+ border-top-right-radius: inherit;
98
+ border-bottom-right-radius: inherit;
99
+ }
100
+ }
101
+ </style>