@ -0,0 +1,16 @@
|
||||
*/.vscode/*
|
||||
*.wav
|
||||
*/resource/*
|
||||
.Ds*
|
||||
*.pyc
|
||||
*.pcm
|
||||
*.npy
|
||||
*.diff
|
||||
*.sqlite
|
||||
*/static/*
|
||||
*.pdparams
|
||||
*.pdiparams*
|
||||
*.pdmodel
|
||||
*/source/*
|
||||
*/PaddleSpeech/*
|
||||
|
After Width: | Height: | Size: 84 KiB |
@ -0,0 +1,103 @@
|
||||
# This is the parameter configuration file for streaming tts server.
|
||||
|
||||
#################################################################################
|
||||
# SERVER SETTING #
|
||||
#################################################################################
|
||||
host: 0.0.0.0
|
||||
port: 8092
|
||||
|
||||
# The task format in the engin_list is: <speech task>_<engine type>
|
||||
# engine_list choices = ['tts_online', 'tts_online-onnx'], the inference speed of tts_online-onnx is faster than tts_online.
|
||||
# protocol choices = ['websocket', 'http']
|
||||
protocol: 'http'
|
||||
engine_list: ['tts_online-onnx']
|
||||
|
||||
|
||||
#################################################################################
|
||||
# ENGINE CONFIG #
|
||||
#################################################################################
|
||||
|
||||
################################### TTS #########################################
|
||||
################### speech task: tts; engine_type: online #######################
|
||||
tts_online:
|
||||
# am (acoustic model) choices=['fastspeech2_csmsc', 'fastspeech2_cnndecoder_csmsc']
|
||||
# fastspeech2_cnndecoder_csmsc support streaming am infer.
|
||||
am: 'fastspeech2_csmsc'
|
||||
am_config:
|
||||
am_ckpt:
|
||||
am_stat:
|
||||
phones_dict:
|
||||
tones_dict:
|
||||
speaker_dict:
|
||||
spk_id: 0
|
||||
|
||||
# voc (vocoder) choices=['mb_melgan_csmsc, hifigan_csmsc']
|
||||
# Both mb_melgan_csmsc and hifigan_csmsc support streaming voc inference
|
||||
voc: 'mb_melgan_csmsc'
|
||||
voc_config:
|
||||
voc_ckpt:
|
||||
voc_stat:
|
||||
|
||||
# others
|
||||
lang: 'zh'
|
||||
device: 'cpu' # set 'gpu:id' or 'cpu'
|
||||
# am_block and am_pad only for fastspeech2_cnndecoder_onnx model to streaming am infer,
|
||||
# when am_pad set 12, streaming synthetic audio is the same as non-streaming synthetic audio
|
||||
am_block: 72
|
||||
am_pad: 12
|
||||
# voc_pad and voc_block voc model to streaming voc infer,
|
||||
# when voc model is mb_melgan_csmsc, voc_pad set 14, streaming synthetic audio is the same as non-streaming synthetic audio; The minimum value of pad can be set to 7, streaming synthetic audio sounds normal
|
||||
# when voc model is hifigan_csmsc, voc_pad set 19, streaming synthetic audio is the same as non-streaming synthetic audio; voc_pad set 14, streaming synthetic audio sounds normal
|
||||
voc_block: 36
|
||||
voc_pad: 14
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
# ENGINE CONFIG #
|
||||
#################################################################################
|
||||
|
||||
################################### TTS #########################################
|
||||
################### speech task: tts; engine_type: online-onnx #######################
|
||||
tts_online-onnx:
|
||||
# am (acoustic model) choices=['fastspeech2_csmsc_onnx', 'fastspeech2_cnndecoder_csmsc_onnx']
|
||||
# fastspeech2_cnndecoder_csmsc_onnx support streaming am infer.
|
||||
am: 'fastspeech2_cnndecoder_csmsc_onnx'
|
||||
# am_ckpt is a list, if am is fastspeech2_cnndecoder_csmsc_onnx, am_ckpt = [encoder model, decoder model, postnet model];
|
||||
# if am is fastspeech2_csmsc_onnx, am_ckpt = [ckpt model];
|
||||
am_ckpt: # list
|
||||
am_stat:
|
||||
phones_dict:
|
||||
tones_dict:
|
||||
speaker_dict:
|
||||
spk_id: 0
|
||||
am_sample_rate: 24000
|
||||
am_sess_conf:
|
||||
device: "cpu" # set 'gpu:id' or 'cpu'
|
||||
use_trt: False
|
||||
cpu_threads: 4
|
||||
|
||||
# voc (vocoder) choices=['mb_melgan_csmsc_onnx, hifigan_csmsc_onnx']
|
||||
# Both mb_melgan_csmsc_onnx and hifigan_csmsc_onnx support streaming voc inference
|
||||
voc: 'hifigan_csmsc_onnx'
|
||||
voc_ckpt:
|
||||
voc_sample_rate: 24000
|
||||
voc_sess_conf:
|
||||
device: "cpu" # set 'gpu:id' or 'cpu'
|
||||
use_trt: False
|
||||
cpu_threads: 4
|
||||
|
||||
# others
|
||||
lang: 'zh'
|
||||
# am_block and am_pad only for fastspeech2_cnndecoder_onnx model to streaming am infer,
|
||||
# when am_pad set 12, streaming synthetic audio is the same as non-streaming synthetic audio
|
||||
am_block: 72
|
||||
am_pad: 12
|
||||
# voc_pad and voc_block voc model to streaming voc infer,
|
||||
# when voc model is mb_melgan_csmsc_onnx, voc_pad set 14, streaming synthetic audio is the same as non-streaming synthetic audio; The minimum value of pad can be set to 7, streaming synthetic audio sounds normal
|
||||
# when voc model is hifigan_csmsc_onnx, voc_pad set 19, streaming synthetic audio is the same as non-streaming synthetic audio; voc_pad set 14, streaming synthetic audio sounds normal
|
||||
voc_block: 36
|
||||
voc_pad: 14
|
||||
# voc_upsample should be same as n_shift on voc config.
|
||||
voc_upsample: 300
|
||||
|
@ -0,0 +1,48 @@
|
||||
# This is the parameter configuration file for PaddleSpeech Serving.
|
||||
|
||||
#################################################################################
|
||||
# SERVER SETTING #
|
||||
#################################################################################
|
||||
host: 0.0.0.0
|
||||
port: 8090
|
||||
|
||||
# The task format in the engin_list is: <speech task>_<engine type>
|
||||
# task choices = ['asr_online']
|
||||
# protocol = ['websocket'] (only one can be selected).
|
||||
# websocket only support online engine type.
|
||||
protocol: 'websocket'
|
||||
engine_list: ['asr_online']
|
||||
|
||||
|
||||
#################################################################################
|
||||
# ENGINE CONFIG #
|
||||
#################################################################################
|
||||
|
||||
################################### ASR #########################################
|
||||
################### speech task: asr; engine_type: online #######################
|
||||
asr_online:
|
||||
model_type: 'conformer_online_wenetspeech'
|
||||
am_model: # the pdmodel file of am static model [optional]
|
||||
am_params: # the pdiparams file of am static model [optional]
|
||||
lang: 'zh'
|
||||
sample_rate: 16000
|
||||
cfg_path:
|
||||
decode_method:
|
||||
force_yes: True
|
||||
device: 'cpu' # cpu or gpu:id
|
||||
decode_method: "attention_rescoring"
|
||||
continuous_decoding: True # enable continue decoding when endpoint detected
|
||||
num_decoding_left_chunks: 16
|
||||
am_predictor_conf:
|
||||
device: # set 'gpu:id' or 'cpu'
|
||||
switch_ir_optim: True
|
||||
glog_info: False # True -> print glog
|
||||
summary: True # False -> do not show predictor config
|
||||
|
||||
chunk_buffer_conf:
|
||||
window_n: 7 # frame
|
||||
shift_n: 4 # frame
|
||||
window_ms: 25 # ms
|
||||
shift_ms: 10 # ms
|
||||
sample_rate: 16000
|
||||
sample_width: 2
|
@ -0,0 +1,14 @@
|
||||
aiofiles
|
||||
fastapi
|
||||
librosa
|
||||
numpy
|
||||
pydantic
|
||||
scikit_learn
|
||||
SoundFile
|
||||
starlette
|
||||
uvicorn
|
||||
paddlepaddle
|
||||
paddlespeech
|
||||
paddlenlp
|
||||
faiss-cpu
|
||||
python-multipart
|
@ -0,0 +1,87 @@
|
||||
from re import sub
|
||||
import numpy as np
|
||||
import paddle
|
||||
import librosa
|
||||
import soundfile
|
||||
|
||||
from paddlespeech.server.engine.asr.online.asr_engine import ASREngine
|
||||
from paddlespeech.server.engine.asr.online.asr_engine import PaddleASRConnectionHanddler
|
||||
from paddlespeech.server.utils.config import get_config
|
||||
|
||||
def readWave(samples):
|
||||
x_len = len(samples)
|
||||
|
||||
chunk_size = 85 * 16 #80ms, sample_rate = 16kHz
|
||||
if x_len % chunk_size != 0:
|
||||
padding_len_x = chunk_size - x_len % chunk_size
|
||||
else:
|
||||
padding_len_x = 0
|
||||
|
||||
padding = np.zeros((padding_len_x), dtype=samples.dtype)
|
||||
padded_x = np.concatenate([samples, padding], axis=0)
|
||||
|
||||
assert (x_len + padding_len_x) % chunk_size == 0
|
||||
num_chunk = (x_len + padding_len_x) / chunk_size
|
||||
num_chunk = int(num_chunk)
|
||||
for i in range(0, num_chunk):
|
||||
start = i * chunk_size
|
||||
end = start + chunk_size
|
||||
x_chunk = padded_x[start:end]
|
||||
yield x_chunk
|
||||
|
||||
|
||||
class ASR:
|
||||
def __init__(self, config_path, ) -> None:
|
||||
self.config = get_config(config_path)['asr_online']
|
||||
self.engine = ASREngine()
|
||||
self.engine.init(self.config)
|
||||
self.connection_handler = PaddleASRConnectionHanddler(self.engine)
|
||||
|
||||
def offlineASR(self, samples, sample_rate=16000):
|
||||
x_chunk, x_chunk_lens = self.engine.preprocess(samples=samples, sample_rate=sample_rate)
|
||||
self.engine.run(x_chunk, x_chunk_lens)
|
||||
result = self.engine.postprocess()
|
||||
self.engine.reset()
|
||||
return result
|
||||
|
||||
def onlineASR(self, samples:bytes=None, is_finished=False):
|
||||
if not is_finished:
|
||||
# 流式开始
|
||||
self.connection_handler.extract_feat(samples)
|
||||
self.connection_handler.decode(is_finished)
|
||||
asr_results = self.connection_handler.get_result()
|
||||
return asr_results
|
||||
else:
|
||||
# 流式结束
|
||||
self.connection_handler.decode(is_finished=True)
|
||||
self.connection_handler.rescoring()
|
||||
asr_results = self.connection_handler.get_result()
|
||||
self.connection_handler.reset()
|
||||
return asr_results
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
config_path = r"../../PaddleSpeech/paddlespeech/server/conf/ws_conformer_application.yaml"
|
||||
|
||||
wav_path = r"../../source/demo/demo_16k.wav"
|
||||
samples, sample_rate = soundfile.read(wav_path, dtype='int16')
|
||||
|
||||
asr = ASR(config_path=config_path)
|
||||
end_result = asr.offlineASR(samples=samples, sample_rate=sample_rate)
|
||||
print("端到端识别结果:", end_result)
|
||||
|
||||
for sub_wav in readWave(samples=samples):
|
||||
# print(sub_wav)
|
||||
message = sub_wav.tobytes()
|
||||
offline_result = asr.onlineASR(message, is_finished=False)
|
||||
print("流式识别结果: ", offline_result)
|
||||
offline_result = asr.onlineASR(is_finished=True)
|
||||
print("流式识别结果: ", offline_result)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
from paddlenlp import Taskflow
|
||||
|
||||
class NLP:
|
||||
def __init__(self, ie_model_path=None):
|
||||
schema = ["时间", "出发地", "目的地", "费用"]
|
||||
if ie_model_path:
|
||||
self.ie_model = Taskflow("information_extraction",
|
||||
schema=schema, task_path=ie_model_path)
|
||||
else:
|
||||
self.ie_model = Taskflow("information_extraction",
|
||||
schema=schema)
|
||||
|
||||
self.dialogue_model = Taskflow("dialogue")
|
||||
|
||||
def chat(self, text):
|
||||
result = self.dialogue_model([text])
|
||||
return result[0]
|
||||
|
||||
def ie(self, text):
|
||||
result = self.ie_model(text)
|
||||
return result
|
||||
|
||||
if __name__ == '__main__':
|
||||
ie_model_path = "../../source/model/"
|
||||
nlp = NLP(ie_model_path=ie_model_path)
|
||||
text = "今天早上我从大牛坊去百度科技园花了七百块钱"
|
||||
print(nlp.ie(text))
|
||||
|
@ -0,0 +1,121 @@
|
||||
# tts 推理引擎,支持流式与非流式
|
||||
# 精简化使用
|
||||
# 用 onnxruntime 进行推理
|
||||
# 1. 下载对应的模型
|
||||
# 2. 加载模型
|
||||
# 3. 端到端推理
|
||||
# 4. 流式推理
|
||||
|
||||
import base64
|
||||
|
||||
import numpy as np
|
||||
from paddlespeech.server.utils.onnx_infer import get_sess
|
||||
from paddlespeech.t2s.frontend.zh_frontend import Frontend
|
||||
from paddlespeech.server.utils.util import denorm, get_chunks
|
||||
from paddlespeech.server.utils.audio_process import float2pcm
|
||||
from paddlespeech.server.utils.config import get_config
|
||||
|
||||
from paddlespeech.server.engine.tts.online.onnx.tts_engine import TTSEngine
|
||||
|
||||
|
||||
class TTS:
|
||||
def __init__(self, config_path):
|
||||
self.config = get_config(config_path)['tts_online-onnx']
|
||||
self.config['voc_block'] = 36
|
||||
self.engine = TTSEngine()
|
||||
self.engine.init(self.config)
|
||||
self.engine.warm_up()
|
||||
|
||||
# 前端初始化
|
||||
self.frontend = Frontend(
|
||||
phone_vocab_path=self.engine.executor.phones_dict,
|
||||
tone_vocab_path=None)
|
||||
|
||||
def depadding(self, data, chunk_num, chunk_id, block, pad, upsample):
|
||||
"""
|
||||
Streaming inference removes the result of pad inference
|
||||
"""
|
||||
front_pad = min(chunk_id * block, pad)
|
||||
# first chunk
|
||||
if chunk_id == 0:
|
||||
data = data[:block * upsample]
|
||||
# last chunk
|
||||
elif chunk_id == chunk_num - 1:
|
||||
data = data[front_pad * upsample:]
|
||||
# middle chunk
|
||||
else:
|
||||
data = data[front_pad * upsample:(front_pad + block) * upsample]
|
||||
|
||||
return data
|
||||
|
||||
def offlineTTS(self, text):
|
||||
get_tone_ids = False
|
||||
merge_sentences = False
|
||||
|
||||
input_ids = self.frontend.get_input_ids(
|
||||
text,
|
||||
merge_sentences=merge_sentences,
|
||||
get_tone_ids=get_tone_ids)
|
||||
phone_ids = input_ids["phone_ids"]
|
||||
wav_list = []
|
||||
for i in range(len(phone_ids)):
|
||||
orig_hs = self.engine.executor.am_encoder_infer_sess.run(
|
||||
None, input_feed={'text': phone_ids[i].numpy()}
|
||||
)
|
||||
hs = orig_hs[0]
|
||||
am_decoder_output = self.engine.executor.am_decoder_sess.run(
|
||||
None, input_feed={'xs': hs})
|
||||
am_postnet_output = self.engine.executor.am_postnet_sess.run(
|
||||
None,
|
||||
input_feed={
|
||||
'xs': np.transpose(am_decoder_output[0], (0, 2, 1))
|
||||
})
|
||||
am_output_data = am_decoder_output + np.transpose(
|
||||
am_postnet_output[0], (0, 2, 1))
|
||||
normalized_mel = am_output_data[0][0]
|
||||
mel = denorm(normalized_mel, self.engine.executor.am_mu, self.engine.executor.am_std)
|
||||
wav = self.engine.executor.voc_sess.run(
|
||||
output_names=None, input_feed={'logmel': mel})[0]
|
||||
wav_list.append(wav)
|
||||
wavs = np.concatenate(wav_list)
|
||||
return wavs
|
||||
|
||||
def streamTTS(self, text):
|
||||
for sub_wav_base64 in self.engine.run(sentence=text):
|
||||
yield sub_wav_base64
|
||||
|
||||
def streamTTSBytes(self, text):
|
||||
for wav in self.engine.executor.infer(
|
||||
text=text,
|
||||
lang=self.engine.config.lang,
|
||||
am=self.engine.config.am,
|
||||
spk_id=0):
|
||||
wav = float2pcm(wav) # float32 to int16
|
||||
wav_bytes = wav.tobytes() # to bytes
|
||||
yield wav_bytes
|
||||
|
||||
|
||||
def after_process(self, wav):
|
||||
# for tvm
|
||||
wav = float2pcm(wav) # float32 to int16
|
||||
wav_bytes = wav.tobytes() # to bytes
|
||||
wav_base64 = base64.b64encode(wav_bytes).decode('utf8') # to base64
|
||||
return wav_base64
|
||||
|
||||
def streamTTS_TVM(self, text):
|
||||
# 用 TVM 优化
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
text = "啊哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈哈哈哈哈"
|
||||
config_path="../../PaddleSpeech/demos/streaming_tts_server/conf/tts_online_application.yaml"
|
||||
tts = TTS(config_path)
|
||||
|
||||
for sub_wav in tts.streamTTS(text):
|
||||
print("sub_wav_base64: ", len(sub_wav))
|
||||
|
||||
end_wav = tts.offlineTTS(text)
|
||||
print(end_wav)
|
||||
|
||||
|
||||
|
@ -0,0 +1,26 @@
|
||||
from paddlespeech.cli import VectorExecutor
|
||||
import numpy as np
|
||||
import logging
|
||||
|
||||
vector_executor = VectorExecutor()
|
||||
|
||||
def get_audio_embedding(path):
|
||||
"""
|
||||
Use vpr_inference to generate embedding of audio
|
||||
"""
|
||||
try:
|
||||
embedding = vector_executor(
|
||||
audio_file=path, model='ecapatdnn_voxceleb12')
|
||||
embedding = embedding / np.linalg.norm(embedding)
|
||||
return embedding
|
||||
except Exception as e:
|
||||
logging.error(f"Error with embedding:{e}")
|
||||
return None
|
||||
|
||||
if __name__ == '__main__':
|
||||
audio_path = r"../../source/demo/demo_16k.wav"
|
||||
emb = get_audio_embedding(audio_path)
|
||||
print(emb.shape)
|
||||
print(emb.dtype)
|
||||
print(type(emb))
|
||||
|
@ -0,0 +1,31 @@
|
||||
from typing import List
|
||||
|
||||
from fastapi import WebSocket
|
||||
|
||||
class ConnectionManager:
|
||||
def __init__(self):
|
||||
# 存放激活的ws连接对象
|
||||
self.active_connections: List[WebSocket] = []
|
||||
|
||||
async def connect(self, ws: WebSocket):
|
||||
# 等待连接
|
||||
await ws.accept()
|
||||
# 存储ws连接对象
|
||||
self.active_connections.append(ws)
|
||||
|
||||
def disconnect(self, ws: WebSocket):
|
||||
# 关闭时 移除ws对象
|
||||
self.active_connections.remove(ws)
|
||||
|
||||
@staticmethod
|
||||
async def send_personal_message(message: str, ws: WebSocket):
|
||||
# 发送个人消息
|
||||
await ws.send_text(message)
|
||||
|
||||
async def broadcast(self, message: str):
|
||||
# 广播消息
|
||||
for connection in self.active_connections:
|
||||
await connection.send_text(message)
|
||||
|
||||
|
||||
manager = ConnectionManager()
|
@ -0,0 +1,18 @@
|
||||
import random
|
||||
|
||||
def randName(n=5):
|
||||
return "".join(random.sample('zyxwvutsrqponmlkjihgfedcba',n))
|
||||
|
||||
def SuccessRequest(result=None, message="ok"):
|
||||
return {
|
||||
"code": 0,
|
||||
"result":result,
|
||||
"message": message
|
||||
}
|
||||
|
||||
def ErrorRequest(result=None, message="error"):
|
||||
return {
|
||||
"code": -1,
|
||||
"result":result,
|
||||
"message": message
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
.vscode/*
|
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>飞桨PaddleSpeech</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "paddlespeechwebclient",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"ant-design-vue": "^2.2.8",
|
||||
"axios": "^0.26.1",
|
||||
"element-plus": "^2.1.9",
|
||||
"js-audio-recorder": "0.5.7",
|
||||
"lamejs": "^1.2.1",
|
||||
"less": "^4.1.2",
|
||||
"vue": "^3.2.25"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^2.3.0",
|
||||
"vite": "^2.9.0"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,19 @@
|
||||
<script setup>
|
||||
import Experience from './components/Experience.vue'
|
||||
import Header from './components/Content/Header/Header.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="app">
|
||||
<Header></Header>
|
||||
<Experience></Experience>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<style style="less">
|
||||
.app {
|
||||
background: url("assets/image/在线体验-背景@2x.png") no-repeat;
|
||||
};
|
||||
</style>
|
@ -0,0 +1,29 @@
|
||||
export const apiURL = {
|
||||
ASR_OFFLINE : '/api/asr/offline', // 获取离线语音识别结果
|
||||
ASR_COLLECT_ENV : '/api/asr/collectEnv', // 采集环境噪音
|
||||
ASR_STOP_RECORD : '/api/asr/stopRecord', // 后端暂停录音
|
||||
ASR_RESUME_RECORD : '/api/asr/resumeRecord',// 后端恢复录音
|
||||
|
||||
NLP_CHAT : '/api/nlp/chat', // NLP闲聊接口
|
||||
NLP_IE : '/api/nlp/ie', // 信息抽取接口
|
||||
|
||||
TTS_OFFLINE : '/api/tts/offline', // 获取TTS音频
|
||||
|
||||
VPR_RECOG : '/api/vpr/recog', // 声纹识别接口,返回声纹对比相似度
|
||||
VPR_ENROLL : '/api/vpr/enroll', // 声纹识别注册接口
|
||||
VPR_LIST : '/api/vpr/list', // 获取声纹注册的数据列表
|
||||
VPR_DEL : '/api/vpr/del', // 删除用户声纹
|
||||
VPR_DATA : '/api/vpr/database64?vprId=', // 获取声纹注册数据 bs64格式
|
||||
|
||||
// websocket
|
||||
CHAT_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/offlineStream', // ChatBot websocket 接口
|
||||
ASR_SOCKET_RECORD: 'ws://localhost:8010/ws/asr/onlineStream', // Stream ASR 接口
|
||||
TTS_SOCKET_RECORD: 'ws://localhost:8010/ws/tts/online', // Stream TTS 接口
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,30 @@
|
||||
import axios from 'axios'
|
||||
import {apiURL} from "./API.js"
|
||||
|
||||
// 上传音频文件,获得识别结果
|
||||
export async function asrOffline(params){
|
||||
const result = await axios.post(
|
||||
apiURL.ASR_OFFLINE, params
|
||||
)
|
||||
return result
|
||||
}
|
||||
|
||||
// 上传环境采集文件
|
||||
export async function asrCollentEnv(params){
|
||||
const result = await axios.post(
|
||||
apiURL.ASR_OFFLINE, params
|
||||
)
|
||||
return result
|
||||
}
|
||||
|
||||
// 暂停录音
|
||||
export async function asrStopRecord(){
|
||||
const result = await axios.get(apiURL.ASR_STOP_RECORD);
|
||||
return result
|
||||
}
|
||||
|
||||
// 恢复录音
|
||||
export async function asrResumeRecord(){
|
||||
const result = await axios.get(apiURL.ASR_RESUME_RECORD);
|
||||
return result
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
import axios from 'axios'
|
||||
import {apiURL} from "./API.js"
|
||||
|
||||
// 获取闲聊对话结果
|
||||
export async function nlpChat(text){
|
||||
const result = await axios.post(apiURL.NLP_CHAT, { chat : text});
|
||||
return result
|
||||
}
|
||||
|
||||
// 获取信息抽取结果
|
||||
export async function nlpIE(text){
|
||||
const result = await axios.post(apiURL.NLP_IE, { chat : text});
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,8 @@
|
||||
import axios from 'axios'
|
||||
import {apiURL} from "./API.js"
|
||||
|
||||
export async function ttsOffline(text){
|
||||
const result = await axios.post(apiURL.TTS_OFFLINE, { text : text});
|
||||
return result
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
import axios from 'axios'
|
||||
import {apiURL} from "./API.js"
|
||||
|
||||
// 注册声纹
|
||||
export async function vprEnroll(params){
|
||||
const result = await axios.post(apiURL.VPR_ENROLL, params);
|
||||
return result
|
||||
}
|
||||
|
||||
// 声纹识别
|
||||
export async function vprRecog(params){
|
||||
const result = await axios.post(apiURL.VPR_RECOG, params);
|
||||
return result
|
||||
}
|
||||
|
||||
// 删除声纹
|
||||
export async function vprDel(params){
|
||||
const result = await axios.post(apiURL.VPR_DEL, params);
|
||||
return result
|
||||
}
|
||||
|
||||
// 获取声纹列表
|
||||
export async function vprList(){
|
||||
const result = await axios.get(apiURL.VPR_LIST);
|
||||
return result
|
||||
}
|
||||
|
||||
// 获取声纹音频
|
||||
export async function vprData(params){
|
||||
const result = await axios.get(apiURL.VPR_DATA+params);
|
||||
return result
|
||||
}
|
After Width: | Height: | Size: 585 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 872 B |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 198 B |
After Width: | Height: | Size: 242 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 861 B |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,148 @@
|
||||
.speech_header {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding-top: 50px;
|
||||
// background: url("../../../assets/image/在线体验-背景@2x.png") no-repeat;
|
||||
box-sizing: border-box;
|
||||
&::after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
// background: pink;
|
||||
.speech_header_title {
|
||||
height: 57px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 38px;
|
||||
color: #000000;
|
||||
letter-spacing: 0;
|
||||
line-height: 57px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
.speech_header_describe {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #575757;
|
||||
line-height: 26px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
;
|
||||
.speech_header_link_box {
|
||||
height: 40px;
|
||||
margin-bottom: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
};
|
||||
.speech_header_link {
|
||||
display: block;
|
||||
background: #2932E1;
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
border-radius: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
margin-right: 20px;
|
||||
// margin-bottom: 40px;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
.speech_header_divider {
|
||||
width: 1200px;
|
||||
height: 1px;
|
||||
background: #D1D1D1;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
.speech_header_content_wrapper {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
// background: pink;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.speech_header_module {
|
||||
width: 384px;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid rgba(224, 224, 224, 1);
|
||||
box-shadow: 4px 8px 12px 0px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 16px;
|
||||
padding: 30px 34px 0px 34px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
margin-bottom: 40px;
|
||||
.speech_header_background_img {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
background-size: 46px 46px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
.speech_header_content {
|
||||
padding-top: 4px;
|
||||
margin-bottom: 32px;
|
||||
|
||||
.speech_header_module_title {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 20px;
|
||||
color: #000000;
|
||||
letter-spacing: 0;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
.speech_header_module_introduce {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
letter-spacing: 0;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
;
|
||||
|
@ -0,0 +1,38 @@
|
||||
<script setup>
|
||||
import AudioFileIdentification from "./AudioFile/AudioFileIdentification.vue"
|
||||
import RealTime from "./RealTime/RealTime.vue"
|
||||
import EndToEndIdentification from "./EndToEnd/EndToEndIdentification.vue";
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="speech_recognition">
|
||||
<div class="speech_recognition_tabs">
|
||||
<div class="frame"></div>
|
||||
<el-tabs class="speech_recognition_mytabs" type="border-card">
|
||||
<el-tab-pane label="实时语音识别" key="1">
|
||||
<RealTime />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="端到端识别" key="2">
|
||||
<EndToEndIdentification />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="音频文件识别" key="3">
|
||||
<AudioFileIdentification />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import "./style.less";
|
||||
|
||||
</style>
|
@ -0,0 +1,241 @@
|
||||
<template>
|
||||
<div class="audioFileIdentification">
|
||||
|
||||
|
||||
<div v-if="uploadStatus === 0" class="public_recognition_speech">
|
||||
<!-- 上传前 -->
|
||||
<el-upload
|
||||
:multiple="false"
|
||||
:accept="'.wav'"
|
||||
:limit="1"
|
||||
:auto-upload="false"
|
||||
:on-change="handleChange"
|
||||
:show-file-list="false"
|
||||
>
|
||||
<div class="upload_img">
|
||||
<div class="upload_img_back"></div>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div class="speech_text">
|
||||
上传文件
|
||||
</div>
|
||||
<div class="speech_text_prompt">
|
||||
支持50秒内的.wav文件
|
||||
</div>
|
||||
</div>
|
||||
<!-- 上传中 -->
|
||||
<div v-else-if="uploadStatus === 1" class="on_the_cross_speech">
|
||||
<div class="on_the_upload_img">
|
||||
<div class="on_the_upload_img_back"></div>
|
||||
</div>
|
||||
<div class="on_the_speech_text">
|
||||
<span class="on_the_speech_loading"> <Spin indicator={antIcon} /></span> 上传中
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
|
||||
<!-- // {/* //开始识别 */} -->
|
||||
<div v-if="recognitionStatus === 0" class="public_recognition_speech_start">
|
||||
<div class="public_recognition_speech_content">
|
||||
<div
|
||||
class="public_recognition_speech_title"
|
||||
>
|
||||
{{ filename }}
|
||||
</div>
|
||||
<div
|
||||
class="public_recognition_speech_again"
|
||||
@click="uploadAgain()"
|
||||
>重新上传</div>
|
||||
<div
|
||||
class="public_recognition_speech_play"
|
||||
@click="paly()"
|
||||
>播放</div>
|
||||
</div>
|
||||
<div class="speech_promp"
|
||||
@click="beginToIdentify()">
|
||||
开始识别
|
||||
</div>
|
||||
</div>
|
||||
<!-- // {/* 识别中 */} -->
|
||||
<div v-else-if="recognitionStatus === 1" class="public_recognition_speech_identify">
|
||||
<div class="public_recognition_speech_identify_box">
|
||||
<div
|
||||
class="public_recognition_speech_identify_back_img"
|
||||
>
|
||||
<a-spin />
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="public_recognition__identify_the_promp"
|
||||
>识别中</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- // {/* // 重新识别 */} -->
|
||||
<div v-else class="public_recognition_speech_identify_ahain">
|
||||
<div class="public_recognition_speech_identify_box_btn">
|
||||
|
||||
<div
|
||||
class="public_recognition__identify_the_btn"
|
||||
@click="toIdentifyThe()"
|
||||
>重新识别</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- {/* 指向 */} -->
|
||||
<div class="public_recognition_point_to">
|
||||
|
||||
</div>
|
||||
<!-- {/* 识别结果 */} -->
|
||||
<div class="public_recognition_result">
|
||||
<div>识别结果</div>
|
||||
<div>{{ asrResult }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { asrOffline } from '../../../../api/ApiASR'
|
||||
|
||||
let audioCtx = new AudioContext({
|
||||
latencyHint: 'interactive',
|
||||
sampleRate: 24000,
|
||||
});
|
||||
|
||||
export default {
|
||||
name:"",
|
||||
data(){
|
||||
return {
|
||||
uploadStatus : 0,
|
||||
recognitionStatus : 0,
|
||||
asrResult : "",
|
||||
indicator : "",
|
||||
|
||||
filename: "",
|
||||
upfile: ""
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
methods:{
|
||||
// 上传文件切换
|
||||
handleChange(file, fileList){
|
||||
this.uploadStatus = 2
|
||||
this.filename = file.name
|
||||
this.upfile = file
|
||||
console.log(file)
|
||||
|
||||
// debugger
|
||||
// var result = Buffer.from(file);
|
||||
|
||||
|
||||
},
|
||||
readFile(file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const fileReader = new FileReader();
|
||||
fileReader.onload = function () {
|
||||
resolve(fileReader);
|
||||
};
|
||||
fileReader.onerror = function (err) {
|
||||
reject(err);
|
||||
};
|
||||
fileReader.readAsDataURL(file);
|
||||
});
|
||||
},
|
||||
// 重新上传
|
||||
uploadAgain(){
|
||||
this.uploadStatus = 0
|
||||
this.upfile = ""
|
||||
this.filename = ""
|
||||
this.asrResult = ""
|
||||
},
|
||||
|
||||
// 播放音频
|
||||
playAudioData(wav_buffer){
|
||||
audioCtx.decodeAudioData(wav_buffer, buffer => {
|
||||
let source = audioCtx.createBufferSource();
|
||||
source.buffer = buffer
|
||||
|
||||
source.connect(audioCtx.destination);
|
||||
source.start();
|
||||
}, function (e) {
|
||||
});
|
||||
},
|
||||
|
||||
// 播放本地音频
|
||||
async paly(){
|
||||
if(this.upfile){
|
||||
let fileRes = ""
|
||||
let fileString = ""
|
||||
fileRes = await this.readFile(this.upfile.raw);
|
||||
fileString = fileRes.result;
|
||||
const audioBase64type = (fileString.match(/data:[^;]*;base64,/))?.[0] ?? '';
|
||||
const isBase64 = !!fileString.match(/data:[^;]*;base64,/);
|
||||
const uploadBase64 = fileString.substr(audioBase64type.length);
|
||||
// isBase64 ? uploadBase64 : undefined
|
||||
// base转换二进制数
|
||||
let typedArray = this.base64ToUint8Array(isBase64 ? uploadBase64 : undefined)
|
||||
this.playAudioData(typedArray.buffer)
|
||||
}
|
||||
},
|
||||
base64ToUint8Array(base64String){
|
||||
const padding = '='.repeat((4 - base64String.length % 4) % 4);
|
||||
const base64 = (base64String + padding)
|
||||
.replace(/-/g, '+')
|
||||
.replace(/_/g, '/');
|
||||
|
||||
const rawData = window.atob(base64);
|
||||
const outputArray = new Uint8Array(rawData.length);
|
||||
|
||||
for (let i = 0; i < rawData.length; ++i) {
|
||||
outputArray[i] = rawData.charCodeAt(i);
|
||||
}
|
||||
return outputArray;
|
||||
},
|
||||
|
||||
// 开始识别
|
||||
async beginToIdentify(){
|
||||
// 识别中
|
||||
this.recognitionStatus = 1
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('files', this.upfile.raw);
|
||||
|
||||
const result = await asrOffline(formData)
|
||||
// 重新识别
|
||||
this.recognitionStatus = 2
|
||||
console.log(result);
|
||||
// debugger
|
||||
if (result.data.code === 0) {
|
||||
|
||||
this.$message.success("识别成功")
|
||||
// 获取识别文本
|
||||
this.asrResult = result.data.result
|
||||
|
||||
} else {
|
||||
this.$message.success("识别失败")
|
||||
};
|
||||
},
|
||||
|
||||
// 重新识别
|
||||
toIdentifyThe(){
|
||||
// this.uploadAgain()
|
||||
this.uploadStatus = 0
|
||||
this.recognitionStatus = 0
|
||||
this.asrResult = ""
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import "./style.less";
|
||||
|
||||
|
||||
</style>
|
@ -0,0 +1,293 @@
|
||||
.audioFileIdentification {
|
||||
width: 1106px;
|
||||
height: 270px;
|
||||
// background-color: pink;
|
||||
padding-top: 40px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
// 开始上传
|
||||
.public_recognition_speech {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
// 开始上传
|
||||
.upload_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
border-radius: 50%;
|
||||
margin-left: 98px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.upload_img_back {
|
||||
width: 34.38px;
|
||||
height: 30.82px;
|
||||
background: #2932E1;
|
||||
background: url("../../../../assets/image/ic_大-上传文件.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 34.38px 30.82px;
|
||||
cursor: pointer;
|
||||
}
|
||||
&:hover {
|
||||
opacity: 0.9;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
.speech_text {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-left: 124px;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
.speech_text_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #999999;
|
||||
font-weight: 400;
|
||||
margin-left: 84px;
|
||||
};
|
||||
};
|
||||
// 上传中
|
||||
.on_the_cross_speech {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
|
||||
.on_the_upload_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #7278F5;
|
||||
border-radius: 50%;
|
||||
margin-left: 98px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.on_the_upload_img_back {
|
||||
width: 34.38px;
|
||||
height: 30.82px;
|
||||
background: #7278F5;
|
||||
background: url("../../../../assets/image/ic_大-上传文件.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 34.38px 30.82px;
|
||||
cursor: pointer;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
.on_the_speech_text {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-left: 124px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
.on_the_speech_loading {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: #7278F5;
|
||||
// background: url("../../../../assets/image/ic_开始聊天.svg");
|
||||
// background-repeat: no-repeat;
|
||||
// background-position: center;
|
||||
// background-size: 16px 16px;
|
||||
margin-right: 8px;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
//开始识别
|
||||
.public_recognition_speech_start {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.public_recognition_speech_content {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.public_recognition_speech_title {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 400;
|
||||
};
|
||||
.public_recognition_speech_again {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #2932E1;
|
||||
font-weight: 400;
|
||||
margin-left: 30px;
|
||||
cursor: pointer;
|
||||
};
|
||||
.public_recognition_speech_play {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #2932E1;
|
||||
font-weight: 400;
|
||||
margin-left: 20px;
|
||||
cursor: pointer;
|
||||
};
|
||||
};
|
||||
.speech_promp {
|
||||
position: absolute;
|
||||
top: 112px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 142px;
|
||||
height: 44px;
|
||||
background: #2932E1;
|
||||
border-radius: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
line-height: 44px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
// 识别中
|
||||
.public_recognition_speech_identify {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.public_recognition_speech_identify_box {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
background: #7278F5;
|
||||
border-radius: 22px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
.public_recognition_speech_identify_back_img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
// background: #7278F5;
|
||||
// background: url("../../../../assets/image/ic_开始聊天.svg");
|
||||
// background-repeat: no-repeat;
|
||||
// background-position: center;
|
||||
// background-size: 16px 16px;
|
||||
};
|
||||
.public_recognition__identify_the_promp {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 500;
|
||||
margin-left: 12px;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
// 重新识别
|
||||
.public_recognition_speech_identify_ahain {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
.public_recognition_speech_identify_box_btn {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
background: #2932E1;
|
||||
border-radius: 22px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
.public_recognition__identify_the_btn {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
// 指向
|
||||
.public_recognition_point_to {
|
||||
width: 47px;
|
||||
height: 67px;
|
||||
background: url("../../../../assets/image/步骤-箭头切图@2x.png") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 47px 67px;
|
||||
margin-top: 91px;
|
||||
margin-right: 67px;
|
||||
};
|
||||
// 识别结果
|
||||
.public_recognition_result {
|
||||
width: 680px;
|
||||
height: 230px;
|
||||
background: #FAFAFA;
|
||||
padding: 40px 50px 0px 50px;
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,114 @@
|
||||
.endToEndIdentification {
|
||||
width: 1106px;
|
||||
height: 270px;
|
||||
// background-color: pink;
|
||||
padding-top: 40px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
// 开始识别
|
||||
.public_recognition_speech {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
|
||||
.endToEndIdentification_start_recorder_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
background: url("../../../../assets/image/ic_开始聊天.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 116px 116px;
|
||||
margin-left: 98px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 20px;
|
||||
&:hover {
|
||||
background: url("../../../../assets/image/ic_开始聊天_hover.svg");
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
.endToEndIdentification_end_recorder_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-left: 98px;
|
||||
margin-bottom: 20px;
|
||||
cursor: pointer;
|
||||
.endToEndIdentification_end_recorder_img_back {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("../../../../assets/image/ic_大-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 50px 50px;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.9;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
.endToEndIdentification_prompt {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-left: 124px;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
.speech_text_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #999999;
|
||||
font-weight: 400;
|
||||
margin-left: 90px;
|
||||
};
|
||||
};
|
||||
// 指向
|
||||
.public_recognition_point_to {
|
||||
width: 47px;
|
||||
height: 67px;
|
||||
background: url("../../../../assets/image/步骤-箭头切图@2x.png") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 47px 67px;
|
||||
margin-top: 91px;
|
||||
margin-right: 67px;
|
||||
};
|
||||
// 识别结果
|
||||
.public_recognition_result {
|
||||
width: 680px;
|
||||
height: 230px;
|
||||
background: #FAFAFA;
|
||||
padding: 40px 50px 0px 50px;
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
@ -0,0 +1,112 @@
|
||||
.realTime{
|
||||
width: 1106px;
|
||||
height: 270px;
|
||||
// background-color: pink;
|
||||
padding-top: 40px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
// 开始识别
|
||||
.public_recognition_speech {
|
||||
width: 295px;
|
||||
height: 230px;
|
||||
padding-top: 32px;
|
||||
box-sizing: border-box;
|
||||
.endToEndIdentification_start_recorder_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
background: url("../../../../assets/image/ic_开始聊天.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 116px 116px;
|
||||
margin-left: 98px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 20px;
|
||||
&:hover {
|
||||
background: url("../../../../assets/image/ic_开始聊天_hover.svg");
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
.endToEndIdentification_end_recorder_img {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-left: 98px;
|
||||
margin-bottom: 20px;
|
||||
cursor: pointer;
|
||||
.endToEndIdentification_end_recorder_img_back {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("../../../../assets/image/ic_大-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 50px 50px;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.9;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
.endToEndIdentification_prompt {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-left: 124px;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
.speech_text_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #999999;
|
||||
font-weight: 400;
|
||||
margin-left: 105px;
|
||||
};
|
||||
};
|
||||
// 指向
|
||||
.public_recognition_point_to {
|
||||
width: 47px;
|
||||
height: 67px;
|
||||
background: url("../../../../assets/image/步骤-箭头切图@2x.png") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 47px 67px;
|
||||
margin-top: 91px;
|
||||
margin-right: 67px;
|
||||
};
|
||||
// 识别结果
|
||||
.public_recognition_result {
|
||||
width: 680px;
|
||||
height: 230px;
|
||||
background: #FAFAFA;
|
||||
padding: 40px 50px 0px 50px;
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 20px;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,76 @@
|
||||
.speech_recognition {
|
||||
width: 1200px;
|
||||
height: 410px;
|
||||
background: #FFFFFF;
|
||||
padding: 40px 50px 50px 44px;
|
||||
position: relative;
|
||||
.frame {
|
||||
width: 605px;
|
||||
height: 50px;
|
||||
border: 1px solid rgba(238,238,238,1);
|
||||
border-radius: 25px;
|
||||
position: absolute;
|
||||
}
|
||||
.speech_recognition_mytabs {
|
||||
.ant-tabs-tab {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
// padding: 12px 0;
|
||||
font-size: 14px;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
padding: 12px 26px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.ant-tabs-tab-active {
|
||||
height: 50px;
|
||||
background: #EEEFFD;
|
||||
border-radius: 25px;
|
||||
padding: 12px 26px;
|
||||
box-sizing: border-box;
|
||||
};
|
||||
.speech_recognition .speech_recognition_mytabs .ant-tabs-ink-bar {
|
||||
position: absolute;
|
||||
background: transparent !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
.ant-tabs-ink-bar {
|
||||
position: absolute;
|
||||
background: transparent !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
.experience .experience_wrapper .experience_content .experience_tabs .ant-tabs-nav::before {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid transparent !important;
|
||||
// border: none;
|
||||
content: '';
|
||||
}
|
||||
.ant-tabs-top > .ant-tabs-nav::before, .ant-tabs-bottom > .ant-tabs-nav::before, .ant-tabs-top > div > .ant-tabs-nav::before, .ant-tabs-bottom > div > .ant-tabs-nav::before {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid transparent !important;
|
||||
// border: none;
|
||||
content: '';
|
||||
}
|
||||
.ant-tabs-top > .ant-tabs-nav::before, .ant-tabs-bottom > .ant-tabs-nav::before, .ant-tabs-top > div > .ant-tabs-nav::before, .ant-tabs-bottom > div > .ant-tabs-nav::before {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid transparent !important;
|
||||
content: '';
|
||||
}
|
||||
.ant-tabs-nav::before {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid transparent !important;
|
||||
content: '';
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,181 @@
|
||||
.voice_chat {
|
||||
width: 1200px;
|
||||
height: 410px;
|
||||
background: #FFFFFF;
|
||||
position: relative;
|
||||
// 开始聊天
|
||||
.voice_chat_wrapper {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
position: absolute;
|
||||
.voice_chat_btn {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
margin-left: 54px;
|
||||
// background: #2932E1;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
background: url("../../../assets/image/ic_开始聊天.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 116px 116px;
|
||||
margin-bottom: 17px;
|
||||
&:hover {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: url("../../../assets/image/ic_开始聊天_hover.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 116px 116px;
|
||||
};
|
||||
|
||||
};
|
||||
.voice_chat_btn_title {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 22px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
.voice_chat_btn_prompt {
|
||||
height: 24px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #999999;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 24px;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
.voice_chat_wrapper::after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
};
|
||||
// 结束聊天
|
||||
.voice_chat_dialog_wrapper {
|
||||
width: 1200px;
|
||||
height: 410px;
|
||||
background: #FFFFFF;
|
||||
position: relative;
|
||||
.dialog_box {
|
||||
width: 100%;
|
||||
height: 410px;
|
||||
padding: 50px 198px 82px 199px;
|
||||
box-sizing: border-box;
|
||||
|
||||
.dialog_content {
|
||||
width: 100%;
|
||||
height: 268px;
|
||||
// background: rgb(113, 144, 145);
|
||||
padding: 0px;
|
||||
overflow: auto;
|
||||
li {
|
||||
list-style-type: none;
|
||||
margin-bottom: 33px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
&:last-of-type(1) {
|
||||
margin-bottom: 0px;
|
||||
};
|
||||
.dialog_content_img_pp {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
// transform: scaleX(-1);
|
||||
background: url("../../../assets/image/飞桨头像@2x.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 60px 60px;
|
||||
margin-right: 20px;
|
||||
};
|
||||
.dialog_content_img_user {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
transform: scaleX(-1);
|
||||
background: url("../../../assets/image/用户头像@2x.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 60px 60px;
|
||||
margin-left: 20px;
|
||||
};
|
||||
.dialog_content_dialogue_pp {
|
||||
height: 50px;
|
||||
background: #F5F5F5;
|
||||
border-radius: 25px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
line-height: 50px;
|
||||
font-weight: 400;
|
||||
padding: 0px 16px;
|
||||
box-sizing: border-box;
|
||||
};
|
||||
.dialog_content_dialogue_user {
|
||||
height: 50px;
|
||||
background: rgba(41,50,225,0.90);
|
||||
border-radius: 25px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
line-height: 50px;
|
||||
font-weight: 400;
|
||||
padding: 0px 16px;
|
||||
box-sizing: border-box;
|
||||
};
|
||||
};
|
||||
};
|
||||
.move_dialogue {
|
||||
justify-content: flex-end;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
.btn_end_dialog {
|
||||
width: 124px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 4px 16px 0px rgba(0,0,0,0.09);
|
||||
border-radius: 21px;
|
||||
padding: 0px 24px;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 40px;
|
||||
transform: translateX(-50%);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
span {
|
||||
display: inline-block;
|
||||
&:nth-of-type(1) {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: url("../../../assets/image/ic_小-结束.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 16px 16px;
|
||||
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #F33E3E;
|
||||
text-align: center;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
margin-left: 4px;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,179 @@
|
||||
.voice_commands {
|
||||
width: 1200px;
|
||||
height: 410px;
|
||||
background: #FFFFFF;
|
||||
padding: 40px 50px 50px 50px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
// 交通报销
|
||||
.voice_commands_traffic {
|
||||
width: 468px;
|
||||
height: 320px;
|
||||
.voice_commands_traffic_title {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
letter-spacing: 0;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 30px;
|
||||
// background: pink;
|
||||
};
|
||||
.voice_commands_traffic_wrapper {
|
||||
width: 465px;
|
||||
height: 264px;
|
||||
// background: #FAFAFA;
|
||||
position: relative;
|
||||
.voice_commands_traffic_wrapper_move {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
};
|
||||
.traffic_btn_img_btn {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #2932E1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
margin-bottom: 20px;
|
||||
margin-left: 84px;
|
||||
&:hover {
|
||||
width: 116px;
|
||||
height: 116px;
|
||||
background: #7278F5;
|
||||
|
||||
.start_recorder_img{
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("../../../assets/image/ic_开始聊天_hover.svg") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 50px 50px;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
.start_recorder_img{
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("../../../assets/image/ic_开始聊天.svg") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 50px 50px;
|
||||
};
|
||||
|
||||
};
|
||||
.traffic_btn_prompt {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
margin-bottom: 16px;
|
||||
margin-left: 110px;
|
||||
};
|
||||
.traffic_btn_list {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
font-weight: 400;
|
||||
width: 112%;
|
||||
};
|
||||
};
|
||||
};
|
||||
//指向
|
||||
.voice_point_to {
|
||||
width: 47px;
|
||||
height: 63px;
|
||||
background: url("../../../assets/image/步骤-箭头切图@2x.png") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 47px 63px;
|
||||
margin-top: 164px;
|
||||
margin-right: 82px;
|
||||
};
|
||||
//识别结果
|
||||
.voice_commands_IdentifyTheResults {
|
||||
.voice_commands_IdentifyTheResults_title {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
line-height: 26px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 30px;
|
||||
};
|
||||
// 显示框
|
||||
.voice_commands_IdentifyTheResults_show {
|
||||
width: 503px;
|
||||
height: 264px;
|
||||
background: #FAFAFA;
|
||||
padding: 40px 0px 0px 50px;
|
||||
box-sizing: border-box;
|
||||
.voice_commands_IdentifyTheResults_show_title {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
// text-align: center;
|
||||
font-weight: 500;
|
||||
margin-bottom: 30px;
|
||||
};
|
||||
.oice_commands_IdentifyTheResults_show_time {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
margin-bottom: 12px;
|
||||
};
|
||||
.oice_commands_IdentifyTheResults_show_money {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
margin-bottom: 12px;
|
||||
};
|
||||
.oice_commands_IdentifyTheResults_show_origin {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
margin-bottom: 12px;
|
||||
};
|
||||
.oice_commands_IdentifyTheResults_show_destination {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
//加载状态
|
||||
.voice_commands_IdentifyTheResults_show_loading {
|
||||
width: 503px;
|
||||
height: 264px;
|
||||
background: #FAFAFA;
|
||||
padding: 40px 0px 0px 50px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
};
|
||||
};
|
||||
.end_recorder_img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("../../../assets/image/ic_大-声音波浪.svg") no-repeat;
|
||||
background-position: center;
|
||||
background-size: 50px 50px;
|
||||
};
|
||||
.end_recorder_img:hover {
|
||||
opacity: 0.9;
|
||||
};
|
||||
};
|
@ -0,0 +1,419 @@
|
||||
.voiceprint {
|
||||
width: 1200px;
|
||||
height: 410px;
|
||||
background: #FFFFFF;
|
||||
padding: 41px 80px 56px 80px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
// 录制声纹
|
||||
.voiceprint_recording {
|
||||
width: 423px;
|
||||
height: 354px;
|
||||
margin-right: 66px;
|
||||
.recording_title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: rgba(41,50,225,0.70);
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 24px;
|
||||
font-weight: 400;
|
||||
margin-right: 16px;
|
||||
border-radius: 50%;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
line-height: 26px;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
};
|
||||
// 开始录音
|
||||
.recording_btn {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #2932E1;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 10px;
|
||||
|
||||
&:hover {
|
||||
background: #7278F5;
|
||||
.recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_录制声音小语音1.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
}
|
||||
.recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_录制声音小语音1.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
.recording_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
|
||||
};
|
||||
// 录音中
|
||||
.recording_btn_the_recording {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #7278F5;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 40px;
|
||||
.recording_img_the_recording {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_小-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
};
|
||||
.recording_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
// 完成录音
|
||||
.complete_the_recording_btn {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #2932E1;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 40px;
|
||||
&:hover {
|
||||
background: #7278F5;
|
||||
.complete_the_recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_小-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
}
|
||||
.complete_the_recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_小-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
.complete_the_recording_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
|
||||
};
|
||||
// table
|
||||
.recording_table {
|
||||
width: 322px;
|
||||
.recording_table_box {
|
||||
.ant-table-thead > tr > th {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
font-weight: 500;
|
||||
text-align: left;
|
||||
background: rgba(40,50,225,0.08);
|
||||
border-bottom: none;
|
||||
transition: background 0.3s ease;
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #333333;
|
||||
// text-align: center;
|
||||
font-weight: 400;
|
||||
&:nth-of-type(2) {
|
||||
border-left: 2px solid white;
|
||||
};
|
||||
};
|
||||
.ant-table-tbody > tr > td {
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
transition: background 0.3s;
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #333333;
|
||||
// text-align: center;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
};
|
||||
// input
|
||||
.recording_input {
|
||||
width: 322px;
|
||||
margin-bottom: 20px;
|
||||
};
|
||||
};
|
||||
// 指向
|
||||
.recording_point_to {
|
||||
width: 63px;
|
||||
height: 47px;
|
||||
background: url("../../../assets/image//步骤-箭头切图@2x.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 63px 47px;
|
||||
margin-right: 66px;
|
||||
margin-top: 198px;
|
||||
};
|
||||
//识别声纹
|
||||
.voiceprint_identify {
|
||||
width: 423px;
|
||||
height: 354px;
|
||||
.identify_title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: rgba(41,50,225,0.70);
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 24px;
|
||||
font-weight: 400;
|
||||
margin-right: 16px;
|
||||
border-radius: 50%;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 26px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
line-height: 26px;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
};
|
||||
// 开始识别
|
||||
.identify_btn {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #2932E1;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 40px;
|
||||
margin-top: 10px;
|
||||
&:hover {
|
||||
background: #7278F5;
|
||||
.identify_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_录制声音小语音1.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
}
|
||||
.identify_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_录制声音小语音1.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
.identify_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
|
||||
};
|
||||
// 识别中
|
||||
.identify_btn_the_recording {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #7278F5;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 40px;
|
||||
.identify_img_the_recording {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_录制声音小语音1.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
};
|
||||
.recording_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
};
|
||||
// 完成识别
|
||||
.identify_complete_the_recording_btn {
|
||||
width: 143px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
background: #2932E1;
|
||||
padding: 0px 24px 0px 21px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 40px;
|
||||
&:hover {
|
||||
background: #7278F5;
|
||||
.identify_complete_the_recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_小-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
}
|
||||
.identify_complete_the_recording_img {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: url("../../../assets/image//icon_小-声音波浪.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 20px 20px;
|
||||
margin-right: 8.26px;
|
||||
|
||||
};
|
||||
.identify_complete_the_recording_prompt {
|
||||
height: 20px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 400;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// 结果
|
||||
.identify_result {
|
||||
width: 422px;
|
||||
height: 184px;
|
||||
text-align: center;
|
||||
line-height: 184px;
|
||||
background: #FAFAFA;
|
||||
position: relative;
|
||||
.identify_result_default {
|
||||
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #999999;
|
||||
font-weight: 400;
|
||||
};
|
||||
.identify_result_content {
|
||||
// text-align: center;
|
||||
// position: absolute;
|
||||
// top: 50%;
|
||||
// left: 50%;
|
||||
// transform: translate(-50%,-50%);
|
||||
div {
|
||||
&:nth-of-type(1) {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
font-weight: 400;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
&:nth-of-type(2) {
|
||||
height: 33px;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 24px;
|
||||
color: #000000;
|
||||
font-weight: 500;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
.action_btn {
|
||||
display: inline-block;
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 16px;
|
||||
color: #2932E1;
|
||||
text-align: center;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
};
|
||||
};
|
@ -0,0 +1,83 @@
|
||||
.experience {
|
||||
width: 100%;
|
||||
height: 709px;
|
||||
// background: url("../assets/image/在线体验-背景@2x.png") no-repeat;
|
||||
background-size: 100% 709px;
|
||||
background-position: initial;
|
||||
//
|
||||
.experience_wrapper {
|
||||
width: 1200px;
|
||||
height: 709px;
|
||||
margin: 0 auto;
|
||||
padding: 0px 0px 0px 0px;
|
||||
box-sizing: border-box;
|
||||
// background: red;
|
||||
.experience_title {
|
||||
height: 42px;
|
||||
font-family: PingFangSC-Semibold;
|
||||
font-size: 30px;
|
||||
color: #000000;
|
||||
font-weight: 600;
|
||||
line-height: 42px;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
};
|
||||
.experience_describe {
|
||||
height: 22px;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
line-height: 22px;
|
||||
font-weight: 400;
|
||||
margin-bottom: 30px;
|
||||
};
|
||||
.experience_content {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.experience_tabs {
|
||||
|
||||
margin-top: 15px;
|
||||
|
||||
& > .ant-tabs-nav {
|
||||
margin-bottom: 20px;
|
||||
|
||||
&::before {
|
||||
content: none;
|
||||
}
|
||||
|
||||
.ant-tabs-nav-wrap {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.ant-tabs-tab {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.ant-tabs-nav-list {
|
||||
margin-right: -32px;
|
||||
flex: none;
|
||||
}
|
||||
};
|
||||
|
||||
.ant-tabs-nav::before {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
border-bottom: 1px solid #f6f7fe;
|
||||
content: '';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
.experience::after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
import { createApp } from 'vue'
|
||||
import ElementPlus from 'element-plus'
|
||||
import 'element-plus/dist/index.css'
|
||||
import Antd from 'ant-design-vue';
|
||||
import 'ant-design-vue/dist/antd.css';
|
||||
import App from './App.vue'
|
||||
import axios from 'axios'
|
||||
|
||||
const app = createApp(App)
|
||||
app.config.globalProperties.$http = axios
|
||||
|
||||
app.use(ElementPlus).use(Antd)
|
||||
app.mount('#app')
|
@ -0,0 +1,28 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
css:
|
||||
{ preprocessorOptions:
|
||||
{ css:
|
||||
{
|
||||
charset: false
|
||||
}
|
||||
}
|
||||
},
|
||||
build: {
|
||||
assetsInlineLimit: '2048' // 2kb
|
||||
},
|
||||
server: {
|
||||
host: "0.0.0.0",
|
||||
proxy: {
|
||||
"/api": {
|
||||
target: "http://localhost:8010",
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(/^\/api/, ""),
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
@ -0,0 +1,785 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@ant-design/colors@^6.0.0":
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz"
|
||||
integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.0"
|
||||
|
||||
"@ant-design/icons-svg@^4.2.1":
|
||||
version "4.2.1"
|
||||
resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz"
|
||||
integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==
|
||||
|
||||
"@ant-design/icons-vue@^6.0.0":
|
||||
version "6.1.0"
|
||||
resolved "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz"
|
||||
integrity sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==
|
||||
dependencies:
|
||||
"@ant-design/colors" "^6.0.0"
|
||||
"@ant-design/icons-svg" "^4.2.1"
|
||||
|
||||
"@babel/parser@^7.16.4":
|
||||
version "7.17.9"
|
||||
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.9.tgz"
|
||||
integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
|
||||
|
||||
"@babel/runtime@^7.10.5":
|
||||
version "7.17.9"
|
||||
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.9.tgz"
|
||||
integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@ctrl/tinycolor@^3.4.0":
|
||||
version "3.4.1"
|
||||
resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
|
||||
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
|
||||
|
||||
"@element-plus/icons-vue@^1.1.4":
|
||||
version "1.1.4"
|
||||
resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-1.1.4.tgz"
|
||||
integrity sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==
|
||||
|
||||
"@floating-ui/core@^0.6.1":
|
||||
version "0.6.1"
|
||||
resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.1.tgz"
|
||||
integrity sha512-Y30eVMcZva8o84c0HcXAtDO4BEzPJMvF6+B7x7urL2xbAqVsGJhojOyHLaoQHQYjb6OkqRq5kO+zeySycQwKqg==
|
||||
|
||||
"@floating-ui/dom@^0.4.2":
|
||||
version "0.4.4"
|
||||
resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.4.tgz"
|
||||
integrity sha512-0Ulu3B/dqQplUUSqnTx0foSrlYuMN+GTtlJWvNJwt6Fr7/PqmlR/Y08o6/+bxDWr6p3roBJRaQ51MDZsNmEhhw==
|
||||
dependencies:
|
||||
"@floating-ui/core" "^0.6.1"
|
||||
|
||||
"@popperjs/core@^2.11.4":
|
||||
version "2.11.5"
|
||||
resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.5.tgz"
|
||||
integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==
|
||||
|
||||
"@simonwep/pickr@~1.8.0":
|
||||
version "1.8.2"
|
||||
resolved "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz"
|
||||
integrity sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==
|
||||
dependencies:
|
||||
core-js "^3.15.1"
|
||||
nanopop "^2.1.0"
|
||||
|
||||
"@types/lodash-es@^4.17.6":
|
||||
version "4.17.6"
|
||||
resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz"
|
||||
integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
|
||||
dependencies:
|
||||
"@types/lodash" "*"
|
||||
|
||||
"@types/lodash@*", "@types/lodash@^4.14.181":
|
||||
version "4.14.181"
|
||||
resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.181.tgz"
|
||||
integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==
|
||||
|
||||
"@vitejs/plugin-vue@^2.3.0":
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.1.tgz"
|
||||
integrity sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==
|
||||
|
||||
"@vue/compiler-core@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.32.tgz"
|
||||
integrity sha512-bRQ8Rkpm/aYFElDWtKkTPHeLnX5pEkNxhPUcqu5crEJIilZH0yeFu/qUAcV4VfSE2AudNPkQSOwMZofhnuutmA==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/shared" "3.2.32"
|
||||
estree-walker "^2.0.2"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-dom@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.32.tgz"
|
||||
integrity sha512-maa3PNB/NxR17h2hDQfcmS02o1f9r9QIpN1y6fe8tWPrS1E4+q8MqrvDDQNhYVPd84rc3ybtyumrgm9D5Rf/kg==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
"@vue/compiler-sfc@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.32.tgz"
|
||||
integrity sha512-uO6+Gh3AVdWm72lRRCjMr8nMOEqc6ezT9lWs5dPzh1E9TNaJkMYPaRtdY9flUv/fyVQotkfjY/ponjfR+trPSg==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/compiler-core" "3.2.32"
|
||||
"@vue/compiler-dom" "3.2.32"
|
||||
"@vue/compiler-ssr" "3.2.32"
|
||||
"@vue/reactivity-transform" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
postcss "^8.1.10"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-ssr@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.32.tgz"
|
||||
integrity sha512-ZklVUF/SgTx6yrDUkaTaBL/JMVOtSocP+z5Xz/qIqqLdW/hWL90P+ob/jOQ0Xc/om57892Q7sRSrex0wujOL2Q==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
"@vue/reactivity-transform@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.32.tgz"
|
||||
integrity sha512-CW1W9zaJtE275tZSWIfQKiPG0iHpdtSlmTqYBu7Y62qvtMgKG5yOxtvBs4RlrZHlaqFSE26avLAgQiTp4YHozw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/compiler-core" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
"@vue/reactivity@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.32.tgz"
|
||||
integrity sha512-4zaDumuyDqkuhbb63hRd+YHFGopW7srFIWesLUQ2su/rJfWrSq3YUvoKAJE8Eu1EhZ2Q4c1NuwnEreKj1FkDxA==
|
||||
dependencies:
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
"@vue/runtime-core@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.32.tgz"
|
||||
integrity sha512-uKKzK6LaCnbCJ7rcHvsK0azHLGpqs+Vi9B28CV1mfWVq1F3Bj8Okk3cX+5DtD06aUh4V2bYhS2UjjWiUUKUF0w==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
"@vue/runtime-dom@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.32.tgz"
|
||||
integrity sha512-AmlIg+GPqjkNoADLjHojEX5RGcAg+TsgXOOcUrtDHwKvA8mO26EnLQLB8nylDjU6AMJh2CIYn8NEgyOV5ZIScQ==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
csstype "^2.6.8"
|
||||
|
||||
"@vue/server-renderer@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.32.tgz"
|
||||
integrity sha512-TYKpZZfRJpGTTiy/s6bVYwQJpAUx3G03z4G7/3O18M11oacrMTVHaHjiPuPqf3xQtY8R4LKmQ3EOT/DRCA/7Wg==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
"@vue/shared@3.2.32":
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.32.tgz"
|
||||
integrity sha512-bjcixPErUsAnTQRQX4Z5IQnICYjIfNCyCl8p29v1M6kfVzvwOICPw+dz48nNuWlTOOx2RHhzHdazJibE8GSnsw==
|
||||
|
||||
"@vueuse/core@^8.2.4":
|
||||
version "8.2.5"
|
||||
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-8.2.5.tgz"
|
||||
integrity sha512-5prZAA1Ji2ltwNUnzreu6WIXYqHYP/9U2BiY5mD/650VYLpVcwVlYznJDFcLCmEWI3o3Vd34oS1FUf+6Mh68GQ==
|
||||
dependencies:
|
||||
"@vueuse/metadata" "8.2.5"
|
||||
"@vueuse/shared" "8.2.5"
|
||||
vue-demi "*"
|
||||
|
||||
"@vueuse/metadata@8.2.5":
|
||||
version "8.2.5"
|
||||
resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.2.5.tgz"
|
||||
integrity sha512-Lk9plJjh9cIdiRdcj16dau+2LANxIdFCiTgdfzwYXbflxq0QnMBeOD2qHgKDE7fuVrtPcVWj8VSuZEx1HRfNQA==
|
||||
|
||||
"@vueuse/shared@8.2.5":
|
||||
version "8.2.5"
|
||||
resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.2.5.tgz"
|
||||
integrity sha512-lNWo+7sk6JCuOj4AiYM+6HZ6fq4xAuVq1sVckMQKgfCJZpZRe4i8es+ZULO5bYTKP+VrOCtqrLR2GzEfrbr3YQ==
|
||||
dependencies:
|
||||
vue-demi "*"
|
||||
|
||||
ant-design-vue@^2.2.8:
|
||||
version "2.2.8"
|
||||
resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-2.2.8.tgz"
|
||||
integrity sha512-3graq9/gCfJQs6hznrHV6sa9oDmk/D1H3Oo0vLdVpPS/I61fZPk8NEyNKCHpNA6fT2cx6xx9U3QS63uuyikg/Q==
|
||||
dependencies:
|
||||
"@ant-design/icons-vue" "^6.0.0"
|
||||
"@babel/runtime" "^7.10.5"
|
||||
"@simonwep/pickr" "~1.8.0"
|
||||
array-tree-filter "^2.1.0"
|
||||
async-validator "^3.3.0"
|
||||
dom-align "^1.12.1"
|
||||
dom-scroll-into-view "^2.0.0"
|
||||
lodash "^4.17.21"
|
||||
lodash-es "^4.17.15"
|
||||
moment "^2.27.0"
|
||||
omit.js "^2.0.0"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
scroll-into-view-if-needed "^2.2.25"
|
||||
shallow-equal "^1.0.0"
|
||||
vue-types "^3.0.0"
|
||||
warning "^4.0.0"
|
||||
|
||||
array-tree-filter@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz"
|
||||
integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==
|
||||
|
||||
async-validator@^3.3.0:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz"
|
||||
integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==
|
||||
|
||||
async-validator@^4.0.7:
|
||||
version "4.0.7"
|
||||
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.0.7.tgz"
|
||||
integrity sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==
|
||||
|
||||
axios@^0.26.1:
|
||||
version "0.26.1"
|
||||
resolved "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz"
|
||||
integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.8"
|
||||
|
||||
compute-scroll-into-view@^1.0.17:
|
||||
version "1.0.17"
|
||||
resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz"
|
||||
integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==
|
||||
|
||||
copy-anything@^2.0.1:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz"
|
||||
integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
|
||||
dependencies:
|
||||
is-what "^3.14.1"
|
||||
|
||||
core-js@^3.15.1:
|
||||
version "3.22.5"
|
||||
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.22.5.tgz"
|
||||
integrity sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==
|
||||
|
||||
csstype@^2.6.8:
|
||||
version "2.6.20"
|
||||
resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz"
|
||||
integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
|
||||
|
||||
dayjs@^1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.0.tgz"
|
||||
integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==
|
||||
|
||||
debug@^3.2.6:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
|
||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
dom-align@^1.12.1:
|
||||
version "1.12.3"
|
||||
resolved "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz"
|
||||
integrity sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==
|
||||
|
||||
dom-scroll-into-view@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz"
|
||||
integrity sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==
|
||||
|
||||
element-plus@^2.1.9:
|
||||
version "2.1.9"
|
||||
resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.1.9.tgz"
|
||||
integrity sha512-6mWqS3YrmJPnouWP4otzL8+MehfOnDFqDbcIdnmC07p+Z0JkWe/CVKc4Wky8AYC8nyDMUQyiZYvooCbqGuM7pg==
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.0"
|
||||
"@element-plus/icons-vue" "^1.1.4"
|
||||
"@floating-ui/dom" "^0.4.2"
|
||||
"@popperjs/core" "^2.11.4"
|
||||
"@types/lodash" "^4.14.181"
|
||||
"@types/lodash-es" "^4.17.6"
|
||||
"@vueuse/core" "^8.2.4"
|
||||
async-validator "^4.0.7"
|
||||
dayjs "^1.11.0"
|
||||
escape-html "^1.0.3"
|
||||
lodash "^4.17.21"
|
||||
lodash-es "^4.17.21"
|
||||
lodash-unified "^1.0.2"
|
||||
memoize-one "^6.0.0"
|
||||
normalize-wheel-es "^1.1.2"
|
||||
|
||||
errno@^0.1.1:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz"
|
||||
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
|
||||
dependencies:
|
||||
prr "~1.0.1"
|
||||
|
||||
esbuild-android-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz#fc5f95ce78c8c3d790fa16bc71bd904f2bb42aa1"
|
||||
integrity sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==
|
||||
|
||||
esbuild-android-arm64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz#44356fbb9f8de82a5cdf11849e011dfb3ad0a8a8"
|
||||
integrity sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==
|
||||
|
||||
esbuild-darwin-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz"
|
||||
integrity sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==
|
||||
|
||||
esbuild-darwin-arm64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz#2a8040c2e465131e5281034f3c72405e643cb7b2"
|
||||
integrity sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==
|
||||
|
||||
esbuild-freebsd-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz#d82c387b4d01fe9e8631f97d41eb54f2dbeb68a3"
|
||||
integrity sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==
|
||||
|
||||
esbuild-freebsd-arm64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz#e8ce2e6c697da6c7ecd0cc0ac821d47c5ab68529"
|
||||
integrity sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==
|
||||
|
||||
esbuild-linux-32@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz#a4a261e2af91986ea62451f2db712a556cb38a15"
|
||||
integrity sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==
|
||||
|
||||
esbuild-linux-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz#4a9500f9197e2c8fcb884a511d2c9d4c2debde72"
|
||||
integrity sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==
|
||||
|
||||
esbuild-linux-arm64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz#c91c21e25b315464bd7da867365dd1dae14ca176"
|
||||
integrity sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==
|
||||
|
||||
esbuild-linux-arm@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz#90e23bca2e6e549affbbe994f80ba3bb6c4d934a"
|
||||
integrity sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==
|
||||
|
||||
esbuild-linux-mips64le@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz#40e11afb08353ff24709fc89e4db0f866bc131d2"
|
||||
integrity sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==
|
||||
|
||||
esbuild-linux-ppc64le@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz#9e8a588c513d06cc3859f9dcc52e5fdfce8a1a5e"
|
||||
integrity sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==
|
||||
|
||||
esbuild-linux-riscv64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz#e578c09b23b3b97652e60e3692bfda628b541f06"
|
||||
integrity sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==
|
||||
|
||||
esbuild-linux-s390x@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz#3c9dab40d0d69932ffded0fd7317bb403626c9bc"
|
||||
integrity sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==
|
||||
|
||||
esbuild-netbsd-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz#e27847f6d506218291619b8c1e121ecd97628494"
|
||||
integrity sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==
|
||||
|
||||
esbuild-openbsd-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz#c94c04c557fae516872a586eae67423da6d2fabb"
|
||||
integrity sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==
|
||||
|
||||
esbuild-sunos-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz#9b79febc0df65a30f1c9bd63047d1675511bf99d"
|
||||
integrity sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==
|
||||
|
||||
esbuild-windows-32@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz#910d11936c8d2122ffdd3275e5b28d8a4e1240ec"
|
||||
integrity sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==
|
||||
|
||||
esbuild-windows-64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz#21b4ce8b42a4efc63f4b58ec617f1302448aad26"
|
||||
integrity sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==
|
||||
|
||||
esbuild-windows-arm64@0.14.36:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz#ba21546fecb7297667d0052d00150de22c044b24"
|
||||
integrity sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==
|
||||
|
||||
esbuild@^0.14.27:
|
||||
version "0.14.36"
|
||||
resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.36.tgz"
|
||||
integrity sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==
|
||||
optionalDependencies:
|
||||
esbuild-android-64 "0.14.36"
|
||||
esbuild-android-arm64 "0.14.36"
|
||||
esbuild-darwin-64 "0.14.36"
|
||||
esbuild-darwin-arm64 "0.14.36"
|
||||
esbuild-freebsd-64 "0.14.36"
|
||||
esbuild-freebsd-arm64 "0.14.36"
|
||||
esbuild-linux-32 "0.14.36"
|
||||
esbuild-linux-64 "0.14.36"
|
||||
esbuild-linux-arm "0.14.36"
|
||||
esbuild-linux-arm64 "0.14.36"
|
||||
esbuild-linux-mips64le "0.14.36"
|
||||
esbuild-linux-ppc64le "0.14.36"
|
||||
esbuild-linux-riscv64 "0.14.36"
|
||||
esbuild-linux-s390x "0.14.36"
|
||||
esbuild-netbsd-64 "0.14.36"
|
||||
esbuild-openbsd-64 "0.14.36"
|
||||
esbuild-sunos-64 "0.14.36"
|
||||
esbuild-windows-32 "0.14.36"
|
||||
esbuild-windows-64 "0.14.36"
|
||||
esbuild-windows-arm64 "0.14.36"
|
||||
|
||||
escape-html@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
|
||||
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
follow-redirects@^1.14.8:
|
||||
version "1.14.9"
|
||||
resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.9.tgz"
|
||||
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
|
||||
|
||||
fsevents@~2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz"
|
||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||
|
||||
function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
graceful-fs@^4.1.2:
|
||||
version "4.2.10"
|
||||
resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||
|
||||
has@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz"
|
||||
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
iconv-lite@^0.4.4:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3"
|
||||
|
||||
image-size@~0.5.0:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
|
||||
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
||||
|
||||
is-core-module@^2.8.1:
|
||||
version "2.8.1"
|
||||
resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.8.1.tgz"
|
||||
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
|
||||
dependencies:
|
||||
has "^1.0.3"
|
||||
|
||||
is-plain-object@3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz"
|
||||
integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==
|
||||
|
||||
is-what@^3.14.1:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz"
|
||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
||||
|
||||
js-audio-recorder@0.5.7:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.npmmirror.com/js-audio-recorder/-/js-audio-recorder-0.5.7.tgz"
|
||||
integrity sha512-DIlv30N86AYHr7zGHN0O7V/3Rd8Q6SIJ/MBzVJaT9STWTdhF4E/8fxCX6ZMgRSv8xmx6fEqcFFNPoofmxJD4+A==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
|
||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||
|
||||
lamejs@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmmirror.com/lamejs/-/lamejs-1.2.1.tgz"
|
||||
integrity sha512-s7bxvjvYthw6oPLCm5pFxvA84wUROODB8jEO2+CE1adhKgrIvVOlmMgY8zyugxGrvRaDHNJanOiS21/emty6dQ==
|
||||
dependencies:
|
||||
use-strict "1.0.1"
|
||||
|
||||
less@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmmirror.com/less/-/less-4.1.2.tgz"
|
||||
integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==
|
||||
dependencies:
|
||||
copy-anything "^2.0.1"
|
||||
parse-node-version "^1.0.1"
|
||||
tslib "^2.3.0"
|
||||
optionalDependencies:
|
||||
errno "^0.1.1"
|
||||
graceful-fs "^4.1.2"
|
||||
image-size "~0.5.0"
|
||||
make-dir "^2.1.0"
|
||||
mime "^1.4.1"
|
||||
needle "^2.5.2"
|
||||
source-map "~0.6.0"
|
||||
|
||||
lodash-es@^4.17.15, lodash-es@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz"
|
||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||
|
||||
lodash-unified@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz"
|
||||
integrity sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==
|
||||
|
||||
lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
loose-envify@^1.0.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz"
|
||||
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
||||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
magic-string@^0.25.7:
|
||||
version "0.25.9"
|
||||
resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz"
|
||||
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.8"
|
||||
|
||||
make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
|
||||
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
|
||||
dependencies:
|
||||
pify "^4.0.1"
|
||||
semver "^5.6.0"
|
||||
|
||||
memoize-one@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz"
|
||||
integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
|
||||
|
||||
mime@^1.4.1:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
|
||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||
|
||||
moment@^2.27.0:
|
||||
version "2.29.3"
|
||||
resolved "https://registry.npmmirror.com/moment/-/moment-2.29.3.tgz"
|
||||
integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
nanoid@^3.3.1:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.2.tgz"
|
||||
integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==
|
||||
|
||||
nanopop@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz"
|
||||
integrity sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==
|
||||
|
||||
needle@^2.5.2:
|
||||
version "2.9.1"
|
||||
resolved "https://registry.npmmirror.com/needle/-/needle-2.9.1.tgz"
|
||||
integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
normalize-wheel-es@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.1.2.tgz"
|
||||
integrity sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png==
|
||||
|
||||
omit.js@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmmirror.com/omit.js/-/omit.js-2.0.2.tgz"
|
||||
integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==
|
||||
|
||||
parse-node-version@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz"
|
||||
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
|
||||
|
||||
path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
picocolors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
|
||||
pify@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
postcss@^8.1.10, postcss@^8.4.12:
|
||||
version "8.4.12"
|
||||
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.12.tgz"
|
||||
integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
|
||||
dependencies:
|
||||
nanoid "^3.3.1"
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
prr@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz"
|
||||
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
||||
|
||||
regenerator-runtime@^0.13.4:
|
||||
version "0.13.9"
|
||||
resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
|
||||
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
||||
|
||||
resize-observer-polyfill@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
|
||||
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||
|
||||
resolve@^1.22.0:
|
||||
version "1.22.0"
|
||||
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz"
|
||||
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
|
||||
dependencies:
|
||||
is-core-module "^2.8.1"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
rollup@^2.59.0:
|
||||
version "2.70.1"
|
||||
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.70.1.tgz"
|
||||
integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sax@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
scroll-into-view-if-needed@^2.2.25:
|
||||
version "2.2.29"
|
||||
resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz"
|
||||
integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==
|
||||
dependencies:
|
||||
compute-scroll-into-view "^1.0.17"
|
||||
|
||||
semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
shallow-equal@^1.0.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz"
|
||||
integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
|
||||
|
||||
source-map-js@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
|
||||
source-map@^0.6.1, source-map@~0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
sourcemap-codec@^1.4.8:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
supports-preserve-symlinks-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
tslib@^2.3.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz"
|
||||
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
|
||||
|
||||
use-strict@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/use-strict/-/use-strict-1.0.1.tgz"
|
||||
integrity sha512-IeiWvvEXfW5ltKVMkxq6FvNf2LojMKvB2OCeja6+ct24S1XOmQw2dGr2JyndwACWAGJva9B7yPHwAmeA9QCqAQ==
|
||||
|
||||
vite@^2.9.0:
|
||||
version "2.9.1"
|
||||
resolved "https://registry.npmmirror.com/vite/-/vite-2.9.1.tgz"
|
||||
integrity sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==
|
||||
dependencies:
|
||||
esbuild "^0.14.27"
|
||||
postcss "^8.4.12"
|
||||
resolve "^1.22.0"
|
||||
rollup "^2.59.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
vue-demi@*:
|
||||
version "0.12.5"
|
||||
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz"
|
||||
integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==
|
||||
|
||||
vue-types@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz"
|
||||
integrity sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==
|
||||
dependencies:
|
||||
is-plain-object "3.0.1"
|
||||
|
||||
vue@^3.2.25:
|
||||
version "3.2.32"
|
||||
resolved "https://registry.npmmirror.com/vue/-/vue-3.2.32.tgz"
|
||||
integrity sha512-6L3jKZApF042OgbCkh+HcFeAkiYi3Lovi8wNhWqIK98Pi5efAMLZzRHgi91v+60oIRxdJsGS9sTMsb+yDpY8Eg==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.32"
|
||||
"@vue/compiler-sfc" "3.2.32"
|
||||
"@vue/runtime-dom" "3.2.32"
|
||||
"@vue/server-renderer" "3.2.32"
|
||||
"@vue/shared" "3.2.32"
|
||||
|
||||
warning@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz"
|
||||
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
|
||||
dependencies:
|
||||
loose-envify "^1.0.0"
|