vome-core 0.0.24 → 0.0.26
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.
- package/dist/admin/components/vm-action-btn.vue +109 -0
- package/dist/admin/components/vm-aside-list-item.vue +124 -0
- package/dist/admin/components/vm-card-grid.vue +36 -0
- package/dist/admin/components/vm-card.vue +100 -0
- package/dist/admin/components/vm-perm-section.vue +57 -0
- package/dist/admin/components/vm-split-layout.vue +85 -0
- package/dist/admin/config/plugin-dev.js +1 -1
- package/dist/admin/crud/components/vm-avatar.vue +103 -0
- package/dist/admin/crud/components/vm-copy-btn.vue +101 -0
- package/dist/admin/crud/components/vm-datetime-picker.vue +9 -0
- package/dist/admin/crud/components/vm-ellipsis-text.vue +34 -0
- package/dist/admin/crud/components/vm-form-hint.vue +63 -0
- package/dist/admin/crud/components/vm-json-code.vue +40 -0
- package/dist/admin/crud/components/vm-json-editor.vue +128 -0
- package/dist/admin/crud/components/vm-json-viewer.vue +147 -0
- package/dist/admin/crud/components/vm-preview-viewer.vue +39 -6
- package/dist/admin/crud/components/vm-status-tag.vue +157 -0
- package/dist/admin/crud/components/vm-tag-list.vue +82 -0
- package/dist/admin/crud/components/vm-text-link.vue +51 -0
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/index.d.ts +11 -1
- package/dist/admin/crud/index.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/mitt.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/registry.js +1 -0
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/file-preview.js +1 -1
- package/dist/admin/lib/json.d.ts +12 -0
- package/dist/admin/lib/json.js +1 -0
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +1 -1
- package/dist/admin/crud/components/vm-audio.vue +0 -217
package/dist/shared/excel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x45aa7d,_0x1dca74){const _0x77777=_0x1aad,_0x1508ba=_0x45aa7d();while(!![]){try{const _0x33670e=-parseInt(_0x77777(0x154))/0x1+parseInt(_0x77777(0x14e))/0x2+-parseInt(_0x77777(0x153))/0x3*(parseInt(_0x77777(0x152))/0x4)+parseInt(_0x77777(0x144))/0x5+-parseInt(_0x77777(0x14b))/0x6*(parseInt(_0x77777(0x148))/0x7)+parseInt(_0x77777(0x143))/0x8+parseInt(_0x77777(0x146))/0x9;if(_0x33670e===_0x1dca74)break;else _0x1508ba['push'](_0x1508ba['shift']());}catch(_0x55ad68){_0x1508ba['push'](_0x1508ba['shift']());}}}(_0x4a21,0xd66dc));import*as _0xf9a6d from'xlsx';function _0x4a21(){const _0x214e1c=['mtC3oda3DgTpEvDe','mZy2nte5rKvAr1Do','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','EgXZEa','u2HLzxqX','oti4nZqZmLzVDMrhsq','mZeWntKXmfLpzKHuuW','ChjVCa','mtG5odC4mJjjrKDNzK8','yM9VA19HChbLBMrFC2HLzxq','n1bLDLHXwa','DxrPBhm','lNHSC3G','mtaXotCYodjyD0vMDuC','BwfW','D3jPDgu','mZu3mJe2rw5xserW','yxjYyxK','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','yw9Hx3rVx3nOzwv0','nZzczvHrt28'];_0x4a21=function(){return _0x214e1c;};return _0x4a21();}function _0x1aad(_0x527a8c,_0x3f8b04){_0x527a8c=_0x527a8c-0x141;const _0x4a2117=_0x4a21();let _0x1aada8=_0x4a2117[_0x527a8c];if(_0x1aad['PRBdPo']===undefined){var _0x14362e=function(_0x330a6c){const _0x2de66d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xf9a6d='',_0xe14f68='';for(let _0x4ee6b1=0x0,_0xfdf934,_0x1c69e0,_0x45233d=0x0;_0x1c69e0=_0x330a6c['charAt'](_0x45233d++);~_0x1c69e0&&(_0xfdf934=_0x4ee6b1%0x4?_0xfdf934*0x40+_0x1c69e0:_0x1c69e0,_0x4ee6b1++%0x4)?_0xf9a6d+=String['fromCharCode'](0xff&_0xfdf934>>(-0x2*_0x4ee6b1&0x6)):0x0){_0x1c69e0=_0x2de66d['indexOf'](_0x1c69e0);}for(let _0x2b3698=0x0,_0x2a485a=_0xf9a6d['length'];_0x2b3698<_0x2a485a;_0x2b3698++){_0xe14f68+='%'+('00'+_0xf9a6d['charCodeAt'](_0x2b3698)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xe14f68);};_0x1aad['QLXrNm']=_0x14362e,_0x1aad['AgiRfw']={},_0x1aad['PRBdPo']=!![];}const _0x455eb6=_0x4a2117[0x0],_0x5aa9f4=_0x527a8c+_0x455eb6,_0x478575=_0x1aad['AgiRfw'][_0x5aa9f4];return!_0x478575?(_0x1aada8=_0x1aad['QLXrNm'](_0x1aada8),_0x1aad['AgiRfw'][_0x5aa9f4]=_0x1aada8):_0x1aada8=_0x478575,_0x1aada8;}export function buildExcelBuffer(_0xe14f68,_0x4ee6b1,_0xfdf934){const _0x181dde=_0x1aad,_0x1c69e0=_0xe14f68['map'](_0x3769aa=>_0x3769aa['label']||_0x3769aa[_0x181dde(0x145)]),_0x45233d=_0x4ee6b1[_0x181dde(0x14c)](_0x45be45=>_0xe14f68['map'](_0x30620b=>{const _0x46307a=_0x181dde;if(_0xfdf934)return _0xfdf934(_0x30620b[_0x46307a(0x145)],_0x45be45);const _0x444a7d=_0x45be45[_0x30620b['prop']];if(_0x444a7d==null)return'';return String(_0x444a7d);})),_0x2b3698=_0xf9a6d[_0x181dde(0x149)][_0x181dde(0x151)]([_0x1c69e0,..._0x45233d]),_0x2a485a=_0xf9a6d['utils']['book_new']();return _0xf9a6d[_0x181dde(0x149)][_0x181dde(0x147)](_0x2a485a,_0x2b3698,_0x181dde(0x142)),_0xf9a6d[_0x181dde(0x14d)](_0x2a485a,{'bookType':_0x181dde(0x141),'type':_0x181dde(0x14f)});}export function excelFilename(_0x2e9751){const _0x12903a=_0x1aad;return _0x2e9751['endsWith'](_0x12903a(0x14a))?_0x2e9751:_0x2e9751+'.xlsx';}export function excelResponseHeaders(_0x597be3){const _0x40f1b0=_0x1aad,_0x57dc7d=excelFilename(_0x597be3);return{'Content-Type':_0x40f1b0(0x155),'Content-Disposition':_0x40f1b0(0x150)+encodeURIComponent(_0x57dc7d)};}
|
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function _0xa479(){var _0x24187b=['m0zisKvpra','mtu1otDQvwPTse4','nZa0ndyWAvzACuvf','mJi2ngrrAwHIAa','ntCXntyXmhLos3fMrG','odC5ntu4menADwnnvG','ogjVEKfbEa','mJG4mZiZqwn4wwX3','mJyYndHPBxDiC3C','nZH4vhLTsfe','nJuYnZq4seL2q0rI','mtfQCvLkrfG'];_0xa479=function(){return _0x24187b;};return _0xa479();}(function(_0xe9330e,_0x693ec4){var _0x4c5e43=_0x2f12,_0xde658c=_0xe9330e();while(!![]){try{var _0x2b5083=-parseInt(_0x4c5e43(0x87))/0x1*(-parseInt(_0x4c5e43(0x85))/0x2)+-parseInt(_0x4c5e43(0x8b))/0x3*(parseInt(_0x4c5e43(0x89))/0x4)+parseInt(_0x4c5e43(0x81))/0x5+parseInt(_0x4c5e43(0x88))/0x6*(-parseInt(_0x4c5e43(0x86))/0x7)+parseInt(_0x4c5e43(0x82))/0x8*(-parseInt(_0x4c5e43(0x8c))/0x9)+parseInt(_0x4c5e43(0x83))/0xa*(parseInt(_0x4c5e43(0x8a))/0xb)+parseInt(_0x4c5e43(0x84))/0xc;if(_0x2b5083===_0x693ec4)break;else _0xde658c['push'](_0xde658c['shift']());}catch(_0x268a23){_0xde658c['push'](_0xde658c['shift']());}}}(_0xa479,0x5836f));export{merge}from'../comm/merge';export{deepTree,flattenTree}from'./tree';function _0x2f12(_0x16342f,_0x553bec){_0x16342f=_0x16342f-0x81;var _0xa47989=_0xa479();var _0x2f1257=_0xa47989[_0x16342f];if(_0x2f12['FfHLxk']===undefined){var _0x5a9027=function(_0x4c842c){var _0x47174c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x1bb2b2='',_0x369d99='';for(var _0x24ebfc=0x0,_0x38fbf1,_0xc5c418,_0xf549d0=0x0;_0xc5c418=_0x4c842c['charAt'](_0xf549d0++);~_0xc5c418&&(_0x38fbf1=_0x24ebfc%0x4?_0x38fbf1*0x40+_0xc5c418:_0xc5c418,_0x24ebfc++%0x4)?_0x1bb2b2+=String['fromCharCode'](0xff&_0x38fbf1>>(-0x2*_0x24ebfc&0x6)):0x0){_0xc5c418=_0x47174c['indexOf'](_0xc5c418);}for(var _0x556610=0x0,_0x3ec42d=_0x1bb2b2['length'];_0x556610<_0x3ec42d;_0x556610++){_0x369d99+='%'+('00'+_0x1bb2b2['charCodeAt'](_0x556610)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x369d99);};_0x2f12['YkJreh']=_0x5a9027,_0x2f12['DavfTG']={},_0x2f12['FfHLxk']=!![];}var _0x5223bf=_0xa47989[0x0],_0x3caff3=_0x16342f+_0x5223bf,_0x2c249a=_0x2f12['DavfTG'][_0x3caff3];return!_0x2c249a?(_0x2f1257=_0x2f12['YkJreh'](_0x2f1257),_0x2f12['DavfTG'][_0x3caff3]=_0x2f1257):_0x2f1257=_0x2c249a,_0x2f1257;}export{RES_CODE}from'../routing/base';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'./excel';
|
package/dist/shared/tree.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x4151f6=_0x415a;function _0x4c14(){const _0x2a8dc6=['C2v0','ntzzEuDcD3y','z2v0','zgvZyW','y2HPBgrYzw4','AgfZ','mtG3A0XYrMjx','mZG4mtuYC0fQq09k','BgvUz3rO','C29YDa','yxnJ','otKZsLz0vhnO','mta4nhv5yNjzCW','mZa2nM9Kq0LQwG','mti4mtC2nuLevg9iyW','mZq3ndq3n0nXtuXfEG','ode3ntKXmfnlr3nKva','ChvZAa','nZm4nJyWrgzoB1rS'];_0x4c14=function(){return _0x2a8dc6;};return _0x4c14();}(function(_0x44cf4a,_0xe9ea33){const _0x1a2599=_0x415a,_0x123181=_0x44cf4a();while(!![]){try{const _0x11d1af=parseInt(_0x1a2599(0x1d9))/0x1*(-parseInt(_0x1a2599(0x1e0))/0x2)+parseInt(_0x1a2599(0x1de))/0x3*(parseInt(_0x1a2599(0x1df))/0x4)+parseInt(_0x1a2599(0x1e1))/0x5+parseInt(_0x1a2599(0x1e5))/0x6+-parseInt(_0x1a2599(0x1d4))/0x7*(parseInt(_0x1a2599(0x1da))/0x8)+-parseInt(_0x1a2599(0x1e2))/0x9+parseInt(_0x1a2599(0x1e3))/0xa;if(_0x11d1af===_0xe9ea33)break;else _0x123181['push'](_0x123181['shift']());}catch(_0x4a138a){_0x123181['push'](_0x123181['shift']());}}}(_0x4c14,0x37257));function _0x415a(_0x262961,_0x4d6648){_0x262961=_0x262961-0x1d3;const _0x4c1425=_0x4c14();let _0x415a75=_0x4c1425[_0x262961];if(_0x415a['rHZTSm']===undefined){var _0x1cd5b8=function(_0x2191d8){const _0x40b3df='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4446cf='',_0x309023='';for(let _0x40a395=0x0,_0x394d91,_0x5a5792,_0x1e8926=0x0;_0x5a5792=_0x2191d8['charAt'](_0x1e8926++);~_0x5a5792&&(_0x394d91=_0x40a395%0x4?_0x394d91*0x40+_0x5a5792:_0x5a5792,_0x40a395++%0x4)?_0x4446cf+=String['fromCharCode'](0xff&_0x394d91>>(-0x2*_0x40a395&0x6)):0x0){_0x5a5792=_0x40b3df['indexOf'](_0x5a5792);}for(let _0x3b89d3=0x0,_0x515fa1=_0x4446cf['length'];_0x3b89d3<_0x515fa1;_0x3b89d3++){_0x309023+='%'+('00'+_0x4446cf['charCodeAt'](_0x3b89d3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x309023);};_0x415a['UOUthr']=_0x1cd5b8,_0x415a['CwsYcy']={},_0x415a['rHZTSm']=!![];}const _0x2428aa=_0x4c1425[0x0],_0x463a78=_0x262961+_0x2428aa,_0xe70ae=_0x415a['CwsYcy'][_0x463a78];return!_0xe70ae?(_0x415a75=_0x415a['UOUthr'](_0x415a75),_0x415a['CwsYcy'][_0x463a78]=_0x415a75):_0x415a75=_0xe70ae,_0x415a75;}export function deepTree(_0x4446cf,_0x309023=_0x4151f6(0x1dd)){const _0x20237f=_0x4151f6,_0x40a395=new Map();for(const _0x1e8926 of _0x4446cf){if(_0x1e8926['id']==null)continue;_0x40a395[_0x20237f(0x1d3)](_0x1e8926['id'],{..._0x1e8926,'children':[]});}const _0x394d91=[];for(const _0x3b89d3 of _0x40a395['values']()){const _0x515fa1=_0x3b89d3['parentId'];_0x515fa1!=null&&_0x515fa1!==''&&_0x40a395[_0x20237f(0x1d8)](_0x515fa1)?_0x40a395[_0x20237f(0x1d5)](_0x515fa1)[_0x20237f(0x1d7)]['push'](_0x3b89d3):_0x394d91[_0x20237f(0x1e4)](_0x3b89d3);}const _0x5a5792=_0x26b361=>{const _0x386171=_0x20237f;_0x26b361[_0x386171(0x1dc)]((_0x31c652,_0x59babe)=>{const _0x5107e9=_0x386171,_0x94828a=_0x31c652['orderNum']??0x0,_0x5df9df=_0x59babe['orderNum']??0x0,_0x10736a=_0x309023===_0x5107e9(0x1d6)?_0x5df9df-_0x94828a:_0x94828a-_0x5df9df;return _0x10736a||Number(_0x31c652['id'])-Number(_0x59babe['id']);});for(const _0x375eb2 of _0x26b361)if(_0x375eb2[_0x386171(0x1d7)]?.['length'])_0x5a5792(_0x375eb2[_0x386171(0x1d7)]);};return _0x5a5792(_0x394d91),_0x394d91;}export function flattenTree(_0x54f056,_0x2ce8f3,_0x2add9=0x0,_0x15e9ee=[]){const _0x4be923=_0x4151f6;for(const _0x233b0a of _0x54f056){const _0xd82a24=_0x233b0a['children']||[];_0x15e9ee[_0x4be923(0x1e4)]({..._0x233b0a,'depth':_0x2add9,'hasChildren':_0xd82a24[_0x4be923(0x1db)]>0x0});if(_0xd82a24['length']&&_0x2ce8f3[_0x4be923(0x1d8)](_0x233b0a['id']))flattenTree(_0xd82a24,_0x2ce8f3,_0x2add9+0x1,_0x15e9ee);}return _0x15e9ee;}
|
package/package.json
CHANGED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-if="src" class="vm-audio">
|
|
3
|
-
<button
|
|
4
|
-
type="button"
|
|
5
|
-
class="vm-audio__play"
|
|
6
|
-
:disabled="!preview"
|
|
7
|
-
:title="preview ? '播放音频' : undefined"
|
|
8
|
-
@click="openPlayer"
|
|
9
|
-
>
|
|
10
|
-
<i class="ri-play-circle-line" aria-hidden="true" />
|
|
11
|
-
<span>{{ label }}</span>
|
|
12
|
-
</button>
|
|
13
|
-
</div>
|
|
14
|
-
<span v-else class="vm-audio is-empty">—</span>
|
|
15
|
-
|
|
16
|
-
<Teleport to="body">
|
|
17
|
-
<div
|
|
18
|
-
v-if="playerOpen"
|
|
19
|
-
class="vm-audio-player"
|
|
20
|
-
role="dialog"
|
|
21
|
-
aria-modal="true"
|
|
22
|
-
@click.self="closePlayer"
|
|
23
|
-
>
|
|
24
|
-
<button type="button" class="vm-audio-player__close" title="关闭" @click="closePlayer">
|
|
25
|
-
<i class="ri-close-line" />
|
|
26
|
-
</button>
|
|
27
|
-
<div class="vm-audio-player__panel">
|
|
28
|
-
<p v-if="titleText" class="vm-audio-player__title">{{ titleText }}</p>
|
|
29
|
-
<audio
|
|
30
|
-
ref="audioRef"
|
|
31
|
-
class="vm-audio-player__media"
|
|
32
|
-
:src="src"
|
|
33
|
-
controls
|
|
34
|
-
autoplay
|
|
35
|
-
playsinline
|
|
36
|
-
@ended="closePlayer"
|
|
37
|
-
/>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
</Teleport>
|
|
41
|
-
</template>
|
|
42
|
-
|
|
43
|
-
<script setup lang="ts">
|
|
44
|
-
import { computed, nextTick, onUnmounted, ref, watch } from 'vue'
|
|
45
|
-
|
|
46
|
-
defineOptions({ name: 'vm-audio' })
|
|
47
|
-
|
|
48
|
-
const props = withDefaults(
|
|
49
|
-
defineProps<{
|
|
50
|
-
/** 音频 URL(表格列绑定 modelValue) */
|
|
51
|
-
modelValue?: string | null
|
|
52
|
-
/** 按钮文案 */
|
|
53
|
-
label?: string
|
|
54
|
-
/** 弹层标题,默认取文件名 */
|
|
55
|
-
title?: string
|
|
56
|
-
/** 是否可播放 */
|
|
57
|
-
preview?: boolean
|
|
58
|
-
}>(),
|
|
59
|
-
{
|
|
60
|
-
label: '播放',
|
|
61
|
-
preview: true,
|
|
62
|
-
},
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
const playerOpen = ref(false)
|
|
66
|
-
const audioRef = ref<HTMLAudioElement | null>(null)
|
|
67
|
-
|
|
68
|
-
const src = computed(() => {
|
|
69
|
-
const v = props.modelValue
|
|
70
|
-
if (v == null) return ''
|
|
71
|
-
return String(v).trim()
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
const titleText = computed(() => {
|
|
75
|
-
if (props.title) return props.title
|
|
76
|
-
const s = src.value
|
|
77
|
-
if (!s) return ''
|
|
78
|
-
return s.split('?')[0]?.split('/').pop() || ''
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
function lockBody(lock: boolean) {
|
|
82
|
-
if (typeof document === 'undefined') return
|
|
83
|
-
document.body.style.overflow = lock ? 'hidden' : ''
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function openPlayer() {
|
|
87
|
-
if (!props.preview || !src.value) return
|
|
88
|
-
playerOpen.value = true
|
|
89
|
-
lockBody(true)
|
|
90
|
-
void nextTick(() => {
|
|
91
|
-
audioRef.value?.play?.().catch(() => undefined)
|
|
92
|
-
})
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function closePlayer() {
|
|
96
|
-
playerOpen.value = false
|
|
97
|
-
lockBody(false)
|
|
98
|
-
audioRef.value?.pause?.()
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function onKeydown(e: KeyboardEvent) {
|
|
102
|
-
if (!playerOpen.value) return
|
|
103
|
-
if (e.key === 'Escape') closePlayer()
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
watch(playerOpen, (open) => {
|
|
107
|
-
if (typeof window === 'undefined') return
|
|
108
|
-
if (open) window.addEventListener('keydown', onKeydown)
|
|
109
|
-
else window.removeEventListener('keydown', onKeydown)
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
onUnmounted(() => {
|
|
113
|
-
lockBody(false)
|
|
114
|
-
if (typeof window !== 'undefined') {
|
|
115
|
-
window.removeEventListener('keydown', onKeydown)
|
|
116
|
-
}
|
|
117
|
-
})
|
|
118
|
-
</script>
|
|
119
|
-
|
|
120
|
-
<style lang="scss" scoped>
|
|
121
|
-
.vm-audio {
|
|
122
|
-
display: inline-flex;
|
|
123
|
-
vertical-align: middle;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.vm-audio.is-empty {
|
|
127
|
-
color: var(--muted-foreground);
|
|
128
|
-
font-size: 12px;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.vm-audio__play {
|
|
132
|
-
display: inline-flex;
|
|
133
|
-
align-items: center;
|
|
134
|
-
gap: 4px;
|
|
135
|
-
padding: 0;
|
|
136
|
-
border: none;
|
|
137
|
-
background: transparent;
|
|
138
|
-
color: var(--brand);
|
|
139
|
-
font-size: 13px;
|
|
140
|
-
font-weight: 600;
|
|
141
|
-
cursor: pointer;
|
|
142
|
-
transition: color 0.15s ease;
|
|
143
|
-
|
|
144
|
-
i {
|
|
145
|
-
font-size: 16px;
|
|
146
|
-
line-height: 1;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
&:hover:not(:disabled) {
|
|
150
|
-
color: var(--brand-deep);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
&:disabled {
|
|
154
|
-
cursor: default;
|
|
155
|
-
opacity: 0.55;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
</style>
|
|
159
|
-
|
|
160
|
-
<style lang="scss">
|
|
161
|
-
.vm-audio-player {
|
|
162
|
-
position: fixed;
|
|
163
|
-
inset: 0;
|
|
164
|
-
z-index: 2200;
|
|
165
|
-
display: flex;
|
|
166
|
-
align-items: center;
|
|
167
|
-
justify-content: center;
|
|
168
|
-
padding: 24px;
|
|
169
|
-
background: rgb(10 12 20 / 72%);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.vm-audio-player__close {
|
|
173
|
-
position: absolute;
|
|
174
|
-
top: 16px;
|
|
175
|
-
right: 16px;
|
|
176
|
-
z-index: 2;
|
|
177
|
-
display: inline-flex;
|
|
178
|
-
width: 36px;
|
|
179
|
-
height: 36px;
|
|
180
|
-
align-items: center;
|
|
181
|
-
justify-content: center;
|
|
182
|
-
border: none;
|
|
183
|
-
border-radius: 10px;
|
|
184
|
-
background: rgb(255 255 255 / 12%);
|
|
185
|
-
color: #fff;
|
|
186
|
-
font-size: 20px;
|
|
187
|
-
cursor: pointer;
|
|
188
|
-
|
|
189
|
-
&:hover {
|
|
190
|
-
background: rgb(255 255 255 / 22%);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.vm-audio-player__panel {
|
|
195
|
-
width: min(480px, calc(100vw - 48px));
|
|
196
|
-
padding: 20px 22px;
|
|
197
|
-
border-radius: 16px;
|
|
198
|
-
background: var(--card);
|
|
199
|
-
box-shadow: 0 24px 48px rgb(15 23 42 / 18%);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.vm-audio-player__title {
|
|
203
|
-
margin: 0 0 12px;
|
|
204
|
-
overflow: hidden;
|
|
205
|
-
text-overflow: ellipsis;
|
|
206
|
-
white-space: nowrap;
|
|
207
|
-
font-size: 14px;
|
|
208
|
-
font-weight: 650;
|
|
209
|
-
color: var(--foreground);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
.vm-audio-player__media {
|
|
213
|
-
display: block;
|
|
214
|
-
width: 100%;
|
|
215
|
-
outline: none;
|
|
216
|
-
}
|
|
217
|
-
</style>
|