mirror of
https://github.com/FreeTubeApp/FreeTube
synced 2024-11-22 09:56:23 +01:00
Merge branch 'development' of github.com:FreeTubeApp/FreeTube into feat/add-page-bookmarking
This commit is contained in:
commit
5597720028
@ -1,14 +1,18 @@
|
||||
const { existsSync, readFileSync, statSync } = require('fs')
|
||||
const { existsSync, readFileSync } = require('fs')
|
||||
const { readFile } = require('fs/promises')
|
||||
const { join } = require('path')
|
||||
const { brotliCompress, constants } = require('zlib')
|
||||
const { promisify } = require('util')
|
||||
const { load: loadYaml } = require('js-yaml')
|
||||
|
||||
const brotliCompressAsync = promisify(brotliCompress)
|
||||
|
||||
const PLUGIN_NAME = 'ProcessLocalesPlugin'
|
||||
|
||||
class ProcessLocalesPlugin {
|
||||
constructor(options = {}) {
|
||||
this.compress = !!options.compress
|
||||
this.isIncrementalBuild = false
|
||||
this.hotReload = !!options.hotReload
|
||||
|
||||
if (typeof options.inputDir !== 'string') {
|
||||
throw new Error('ProcessLocalesPlugin: no input directory `inputDir` specified.')
|
||||
@ -22,49 +26,68 @@ class ProcessLocalesPlugin {
|
||||
}
|
||||
this.outputDir = options.outputDir
|
||||
|
||||
this.locales = {}
|
||||
/** @type {Map<str, any>} */
|
||||
this.locales = new Map()
|
||||
this.localeNames = []
|
||||
this.activeLocales = []
|
||||
|
||||
this.cache = {}
|
||||
/** @type {Map<str, any>} */
|
||||
this.cache = new Map()
|
||||
|
||||
this.filePaths = []
|
||||
this.previousTimestamps = new Map()
|
||||
this.startTime = Date.now()
|
||||
|
||||
/** @type {(updatedLocales: [string, string][]) => void|null} */
|
||||
this.notifyLocaleChange = null
|
||||
|
||||
if (this.hotReload) {
|
||||
this.hotReloadScript = readFileSync(`${__dirname}/_hotReloadLocalesScript.js`, 'utf-8')
|
||||
}
|
||||
|
||||
this.loadLocales()
|
||||
}
|
||||
|
||||
/** @param {import('webpack').Compiler} compiler */
|
||||
apply(compiler) {
|
||||
compiler.hooks.thisCompilation.tap('ProcessLocalesPlugin', (compilation) => {
|
||||
const { CachedSource, RawSource } = compiler.webpack.sources;
|
||||
const { Compilation } = compiler.webpack
|
||||
|
||||
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
||||
const IS_DEV_SERVER = !!compiler.watching
|
||||
const { CachedSource, RawSource } = compiler.webpack.sources;
|
||||
|
||||
compilation.hooks.additionalAssets.tapPromise('process-locales-plugin', async (_assets) => {
|
||||
compilation.hooks.processAssets.tapPromise({
|
||||
name: PLUGIN_NAME,
|
||||
stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
|
||||
}, async (_assets) => {
|
||||
|
||||
// While running in the webpack dev server, this hook gets called for every incremental build.
|
||||
// For incremental builds we can return the already processed versions, which saves time
|
||||
// and makes webpack treat them as cached
|
||||
const promises = []
|
||||
// Prevents `loadLocales` called twice on first time (e.g. release build)
|
||||
if (this.isIncrementalBuild) {
|
||||
this.loadLocales(true)
|
||||
} else {
|
||||
this.isIncrementalBuild = true
|
||||
|
||||
/** @type {[string, string][]} */
|
||||
const updatedLocales = []
|
||||
if (this.hotReload && !this.notifyLocaleChange) {
|
||||
console.warn('ProcessLocalesPlugin: Unable to live reload locales as `notifyLocaleChange` is not set.')
|
||||
}
|
||||
|
||||
Object.values(this.locales).forEach((localeEntry) => {
|
||||
const { locale, data, mtimeMs } = localeEntry
|
||||
|
||||
for (let [locale, data] of this.locales) {
|
||||
promises.push(new Promise(async (resolve) => {
|
||||
if (IS_DEV_SERVER) {
|
||||
const cacheEntry = this.cache[locale]
|
||||
if (IS_DEV_SERVER && compiler.fileTimestamps) {
|
||||
const filePath = join(this.inputDir, `${locale}.yaml`)
|
||||
|
||||
if (cacheEntry != null) {
|
||||
const { filename, source, mtimeMs: cachedMtimeMs } = cacheEntry
|
||||
const timestamp = compiler.fileTimestamps.get(filePath)?.safeTime
|
||||
|
||||
if (cachedMtimeMs === mtimeMs) {
|
||||
compilation.emitAsset(filename, source, { minimized: true })
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
if (timestamp && timestamp > (this.previousTimestamps.get(locale) ?? this.startTime)) {
|
||||
this.previousTimestamps.set(locale, timestamp)
|
||||
|
||||
const contents = await readFile(filePath, 'utf-8')
|
||||
data = loadYaml(contents)
|
||||
} else {
|
||||
const { filename, source } = this.cache.get(locale)
|
||||
compilation.emitAsset(filename, source, { minimized: true })
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,6 +96,10 @@ class ProcessLocalesPlugin {
|
||||
let filename = `${this.outputDir}/${locale}.json`
|
||||
let output = JSON.stringify(data)
|
||||
|
||||
if (this.hotReload && compiler.fileTimestamps) {
|
||||
updatedLocales.push([locale, output])
|
||||
}
|
||||
|
||||
if (this.compress) {
|
||||
filename += '.br'
|
||||
output = await this.compressLocale(output)
|
||||
@ -82,51 +109,61 @@ class ProcessLocalesPlugin {
|
||||
|
||||
if (IS_DEV_SERVER) {
|
||||
source = new CachedSource(source)
|
||||
this.cache[locale] = { filename, source, mtimeMs }
|
||||
this.cache.set(locale, { filename, source })
|
||||
|
||||
// we don't need the unmodified sources anymore, as we use the cache `this.cache`
|
||||
// so we can clear this to free some memory
|
||||
this.locales.set(locale, null)
|
||||
}
|
||||
|
||||
compilation.emitAsset(filename, source, { minimized: true })
|
||||
|
||||
resolve()
|
||||
}))
|
||||
|
||||
if (IS_DEV_SERVER) {
|
||||
// we don't need the unmodified sources anymore, as we use the cache `this.cache`
|
||||
// so we can clear this to free some memory
|
||||
delete localeEntry.data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
await Promise.all(promises)
|
||||
|
||||
if (this.hotReload && this.notifyLocaleChange && updatedLocales.length > 0) {
|
||||
this.notifyLocaleChange(updatedLocales)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
compiler.hooks.afterCompile.tap(PLUGIN_NAME, (compilation) => {
|
||||
if (!!compiler.watching) {
|
||||
// watch locale files for changes
|
||||
compilation.fileDependencies.addAll(this.filePaths)
|
||||
}
|
||||
})
|
||||
|
||||
compiler.hooks.emit.tap(PLUGIN_NAME, (compilation) => {
|
||||
if (this.hotReload) {
|
||||
// Find generated JavaScript output file (e.g. renderer.js or web.js)
|
||||
// and inject the code snippet that listens for locale updates and replaces vue-i18n's locales
|
||||
|
||||
/** @type {string} */
|
||||
const filename = [...[...compilation.chunks][0].files]
|
||||
.find(file => file.endsWith('.js'))
|
||||
|
||||
compilation.assets[filename]._source._children.push(`\n${this.hotReloadScript}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
loadLocales(loadModifiedFilesOnly = false) {
|
||||
if (this.activeLocales.length === 0) {
|
||||
this.activeLocales = JSON.parse(readFileSync(`${this.inputDir}/activeLocales.json`))
|
||||
}
|
||||
loadLocales() {
|
||||
const activeLocales = JSON.parse(readFileSync(`${this.inputDir}/activeLocales.json`))
|
||||
|
||||
for (const locale of activeLocales) {
|
||||
const filePath = join(this.inputDir, `${locale}.yaml`)
|
||||
|
||||
this.filePaths.push(filePath)
|
||||
|
||||
for (const locale of this.activeLocales) {
|
||||
const filePath = `${this.inputDir}/${locale}.yaml`
|
||||
// Cannot use `mtime` since values never equal
|
||||
const mtimeMsFromStats = statSync(filePath).mtimeMs
|
||||
if (loadModifiedFilesOnly) {
|
||||
// Skip reading files where mtime (modified time) same as last read
|
||||
// (stored in mtime)
|
||||
const existingMtime = this.locales[locale]?.mtimeMs
|
||||
if (existingMtime != null && existingMtime === mtimeMsFromStats) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
const contents = readFileSync(filePath, 'utf-8')
|
||||
const data = loadYaml(contents)
|
||||
this.locales[locale] = { locale, data, mtimeMs: mtimeMsFromStats }
|
||||
this.locales.set(locale, data)
|
||||
|
||||
const localeName = data['Locale Name'] ?? locale
|
||||
if (!loadModifiedFilesOnly) {
|
||||
this.localeNames.push(localeName)
|
||||
}
|
||||
this.localeNames.push(data['Locale Name'] ?? locale)
|
||||
}
|
||||
}
|
||||
|
||||
|
18
_scripts/_hotReloadLocalesScript.js
Normal file
18
_scripts/_hotReloadLocalesScript.js
Normal file
@ -0,0 +1,18 @@
|
||||
const websocket = new WebSocket('ws://localhost:9080/ws')
|
||||
|
||||
websocket.onmessage = (event) => {
|
||||
const message = JSON.parse(event.data)
|
||||
|
||||
if (message.type === 'freetube-locale-update') {
|
||||
const i18n = document.getElementById('app').__vue__.$i18n
|
||||
|
||||
for (const [locale, data] of message.data) {
|
||||
// Only update locale data if it was already loaded
|
||||
if (i18n.availableLocales.includes(locale)) {
|
||||
const localeData = JSON.parse(data)
|
||||
|
||||
i18n.setLocaleMessage(locale, localeData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,8 @@ const kill = require('tree-kill')
|
||||
const path = require('path')
|
||||
const { spawn } = require('child_process')
|
||||
|
||||
const ProcessLocalesPlugin = require('./ProcessLocalesPlugin')
|
||||
|
||||
let electronProcess = null
|
||||
let manualRestart = null
|
||||
|
||||
@ -76,6 +78,22 @@ async function restartElectron() {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import('webpack').Compiler} compiler
|
||||
* @param {WebpackDevServer} devServer
|
||||
*/
|
||||
function setupNotifyLocaleUpdate(compiler, devServer) {
|
||||
const notifyLocaleChange = (updatedLocales) => {
|
||||
devServer.sendMessage(devServer.webSocketServer.clients, "freetube-locale-update", updatedLocales)
|
||||
}
|
||||
|
||||
compiler.options.plugins
|
||||
.filter(plugin => plugin instanceof ProcessLocalesPlugin)
|
||||
.forEach((/** @type {ProcessLocalesPlugin} */plugin) => {
|
||||
plugin.notifyLocaleChange = notifyLocaleChange
|
||||
})
|
||||
}
|
||||
|
||||
function startMain() {
|
||||
const compiler = webpack(mainConfig)
|
||||
const { name } = compiler
|
||||
@ -116,6 +134,7 @@ function startRenderer(callback) {
|
||||
ignored: [
|
||||
/(dashFiles|storyboards)\/*/,
|
||||
'/**/.DS_Store',
|
||||
'**/static/locales/*'
|
||||
]
|
||||
},
|
||||
publicPath: '/static'
|
||||
@ -126,6 +145,8 @@ function startRenderer(callback) {
|
||||
server.startCallback(err => {
|
||||
if (err) console.error(err)
|
||||
|
||||
setupNotifyLocaleUpdate(compiler, server)
|
||||
|
||||
callback()
|
||||
})
|
||||
}
|
||||
@ -142,11 +163,12 @@ function startWeb () {
|
||||
const server = new WebpackDevServer({
|
||||
open: true,
|
||||
static: {
|
||||
directory: path.join(process.cwd(), 'dist/web/static'),
|
||||
directory: path.resolve(__dirname, '..', 'static'),
|
||||
watch: {
|
||||
ignored: [
|
||||
/(dashFiles|storyboards)\/*/,
|
||||
'/**/.DS_Store',
|
||||
'**/static/locales/*'
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -155,6 +177,8 @@ function startWeb () {
|
||||
|
||||
server.startCallback(err => {
|
||||
if (err) console.error(err)
|
||||
|
||||
setupNotifyLocaleUpdate(compiler, server)
|
||||
})
|
||||
}
|
||||
if (!web) {
|
||||
|
@ -6,7 +6,6 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin')
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
||||
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
|
||||
const ProcessLocalesPlugin = require('./ProcessLocalesPlugin')
|
||||
const WatchExternalFilesPlugin = require('webpack-watch-external-files-plugin')
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
||||
|
||||
const isDevMode = process.env.NODE_ENV === 'development'
|
||||
@ -15,6 +14,7 @@ const { version: swiperVersion } = JSON.parse(readFileSync(path.join(__dirname,
|
||||
|
||||
const processLocalesPlugin = new ProcessLocalesPlugin({
|
||||
compress: !isDevMode,
|
||||
hotReload: isDevMode,
|
||||
inputDir: path.join(__dirname, '../static/locales'),
|
||||
outputDir: 'static/locales',
|
||||
})
|
||||
@ -165,16 +165,4 @@ const config = {
|
||||
target: 'electron-renderer',
|
||||
}
|
||||
|
||||
if (isDevMode) {
|
||||
const activeLocales = JSON.parse(readFileSync(path.join(__dirname, '../static/locales/activeLocales.json')))
|
||||
|
||||
config.plugins.push(
|
||||
new WatchExternalFilesPlugin({
|
||||
files: [
|
||||
`./static/locales/{${activeLocales.join(',')}}.yaml`,
|
||||
],
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = config
|
||||
|
@ -178,6 +178,7 @@ const config = {
|
||||
|
||||
const processLocalesPlugin = new ProcessLocalesPlugin({
|
||||
compress: false,
|
||||
hotReload: isDevMode,
|
||||
inputDir: path.join(__dirname, '../static/locales'),
|
||||
outputDir: 'static/locales',
|
||||
})
|
||||
|
20
package.json
20
package.json
@ -56,6 +56,7 @@
|
||||
"@fortawesome/fontawesome-svg-core": "^6.5.2",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.5.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.5.2",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.5.2",
|
||||
"@fortawesome/vue-fontawesome": "^2.0.10",
|
||||
"@seald-io/nedb": "^4.0.4",
|
||||
"@silvermine/videojs-quality-selector": "^1.3.1",
|
||||
@ -66,7 +67,7 @@
|
||||
"path-browserify": "^1.0.1",
|
||||
"portal-vue": "^2.1.7",
|
||||
"process": "^0.11.10",
|
||||
"swiper": "^11.1.1",
|
||||
"swiper": "^11.1.3",
|
||||
"video.js": "7.21.5",
|
||||
"videojs-contrib-quality-levels": "^3.0.0",
|
||||
"videojs-http-source-selector": "^1.1.6",
|
||||
@ -90,32 +91,32 @@
|
||||
"babel-loader": "^9.1.3",
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
"css-loader": "^7.1.1",
|
||||
"css-minimizer-webpack-plugin": "^6.0.0",
|
||||
"electron": "^30.0.2",
|
||||
"css-minimizer-webpack-plugin": "^7.0.0",
|
||||
"electron": "^30.0.3",
|
||||
"electron-builder": "^24.13.3",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsonc": "^2.15.1",
|
||||
"eslint-plugin-n": "^17.4.0",
|
||||
"eslint-plugin-n": "^17.7.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-unicorn": "^52.0.0",
|
||||
"eslint-plugin-vue": "^9.25.0",
|
||||
"eslint-plugin-unicorn": "^53.0.0",
|
||||
"eslint-plugin-vue": "^9.26.0",
|
||||
"eslint-plugin-vuejs-accessibility": "^2.3.0",
|
||||
"eslint-plugin-yml": "^1.14.0",
|
||||
"html-webpack-plugin": "^5.6.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"json-minimizer-webpack-plugin": "^5.0.0",
|
||||
"lefthook": "^1.6.10",
|
||||
"lefthook": "^1.6.12",
|
||||
"mini-css-extract-plugin": "^2.9.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"postcss": "^8.4.38",
|
||||
"postcss-scss": "^4.0.9",
|
||||
"prettier": "^2.8.8",
|
||||
"rimraf": "^5.0.5",
|
||||
"sass": "^1.76.0",
|
||||
"rimraf": "^5.0.7",
|
||||
"sass": "^1.77.2",
|
||||
"sass-loader": "^14.2.1",
|
||||
"stylelint": "^16.5.0",
|
||||
"stylelint-config-sass-guidelines": "^11.1.0",
|
||||
@ -129,7 +130,6 @@
|
||||
"webpack": "^5.91.0",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"webpack-dev-server": "^5.0.4",
|
||||
"webpack-watch-external-files-plugin": "^3.0.0",
|
||||
"yaml-eslint-parser": "^1.2.2"
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ const IpcChannels = {
|
||||
DISABLE_PROXY: 'disable-proxy',
|
||||
OPEN_EXTERNAL_LINK: 'open-external-link',
|
||||
GET_SYSTEM_LOCALE: 'get-system-locale',
|
||||
GET_USER_DATA_PATH: 'get-user-data-path',
|
||||
GET_USER_DATA_PATH_SYNC: 'get-user-data-path-sync',
|
||||
GET_PICTURES_PATH: 'get-pictures-path',
|
||||
SHOW_OPEN_DIALOG: 'show-open-dialog',
|
||||
SHOW_SAVE_DIALOG: 'show-save-dialog',
|
||||
@ -28,7 +26,10 @@ const IpcChannels = {
|
||||
SYNC_PLAYLISTS: 'sync-playlists',
|
||||
|
||||
GET_REPLACE_HTTP_CACHE: 'get-replace-http-cache',
|
||||
TOGGLE_REPLACE_HTTP_CACHE: 'toggle-replace-http-cache'
|
||||
TOGGLE_REPLACE_HTTP_CACHE: 'toggle-replace-http-cache',
|
||||
|
||||
PLAYER_CACHE_GET: 'player-cache-get',
|
||||
PLAYER_CACHE_SET: 'player-cache-set'
|
||||
}
|
||||
|
||||
const DBActions = {
|
||||
|
@ -199,10 +199,12 @@ function runApp() {
|
||||
app.commandLine.appendSwitch('enable-features', 'VaapiVideoDecodeLinuxGL')
|
||||
}
|
||||
|
||||
const userDataPath = app.getPath('userData')
|
||||
|
||||
// command line switches need to be added before the app ready event first
|
||||
// that means we can't use the normal settings system as that is asynchronous,
|
||||
// doing it synchronously ensures that we add it before the event fires
|
||||
const REPLACE_HTTP_CACHE_PATH = `${app.getPath('userData')}/experiment-replace-http-cache`
|
||||
const REPLACE_HTTP_CACHE_PATH = `${userDataPath}/experiment-replace-http-cache`
|
||||
const replaceHttpCache = existsSync(REPLACE_HTTP_CACHE_PATH)
|
||||
if (replaceHttpCache) {
|
||||
// the http cache causes excessive disk usage during video playback
|
||||
@ -211,6 +213,8 @@ function runApp() {
|
||||
app.commandLine.appendSwitch('disable-http-cache')
|
||||
}
|
||||
|
||||
const PLAYER_CACHE_PATH = `${userDataPath}/player_cache`
|
||||
|
||||
// See: https://stackoverflow.com/questions/45570589/electron-protocol-handler-not-working-on-windows
|
||||
// remove so we can register each time as we run the app.
|
||||
app.removeAsDefaultProtocolClient('freetube')
|
||||
@ -866,14 +870,6 @@ function runApp() {
|
||||
return app.getSystemLocale()
|
||||
})
|
||||
|
||||
ipcMain.handle(IpcChannels.GET_USER_DATA_PATH, () => {
|
||||
return app.getPath('userData')
|
||||
})
|
||||
|
||||
ipcMain.on(IpcChannels.GET_USER_DATA_PATH_SYNC, (event) => {
|
||||
event.returnValue = app.getPath('userData')
|
||||
})
|
||||
|
||||
ipcMain.handle(IpcChannels.GET_PICTURES_PATH, () => {
|
||||
return app.getPath('pictures')
|
||||
})
|
||||
@ -938,6 +934,35 @@ function runApp() {
|
||||
relaunch()
|
||||
})
|
||||
|
||||
function playerCachePathForKey(key) {
|
||||
// Remove path separators and period characters,
|
||||
// to prevent any files outside of the player_cache directory,
|
||||
// from being read or written
|
||||
const sanitizedKey = `${key}`.replaceAll(/[./\\]/g, '__')
|
||||
|
||||
return path.join(PLAYER_CACHE_PATH, sanitizedKey)
|
||||
}
|
||||
|
||||
ipcMain.handle(IpcChannels.PLAYER_CACHE_GET, async (_, key) => {
|
||||
const filePath = playerCachePathForKey(key)
|
||||
|
||||
try {
|
||||
const contents = await asyncFs.readFile(filePath)
|
||||
return contents.buffer
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return undefined
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.handle(IpcChannels.PLAYER_CACHE_SET, async (_, key, value) => {
|
||||
const filePath = playerCachePathForKey(key)
|
||||
|
||||
await asyncFs.mkdir(PLAYER_CACHE_PATH, { recursive: true })
|
||||
|
||||
await asyncFs.writeFile(filePath, new Uint8Array(value))
|
||||
})
|
||||
|
||||
// ************************************************* //
|
||||
// DB related IPC calls
|
||||
// *********** //
|
||||
|
@ -40,6 +40,9 @@
|
||||
overflow-y: scroll;
|
||||
block-size: 40vh;
|
||||
display: block;
|
||||
padding-inline: 16px;
|
||||
margin-block: 16px;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
.fade-enter-active, .fade-leave-active {
|
||||
@ -64,4 +67,8 @@
|
||||
.flexBox {
|
||||
margin-block: 60px -75px;
|
||||
}
|
||||
|
||||
.changeLogText {
|
||||
block-size: 65vh;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
import Vue, { defineComponent } from 'vue'
|
||||
import { defineComponent } from 'vue'
|
||||
import { mapActions, mapMutations } from 'vuex'
|
||||
import { ObserveVisibility } from 'vue-observe-visibility'
|
||||
import FtFlexBox from './components/ft-flex-box/ft-flex-box.vue'
|
||||
import TopNav from './components/top-nav/top-nav.vue'
|
||||
import SideNav from './components/side-nav/side-nav.vue'
|
||||
@ -21,8 +20,6 @@ import { translateWindowTitle } from './helpers/strings'
|
||||
|
||||
let ipcRenderer = null
|
||||
|
||||
Vue.directive('observe-visibility', ObserveVisibility)
|
||||
|
||||
export default defineComponent({
|
||||
name: 'App',
|
||||
components: {
|
||||
@ -243,7 +240,17 @@ export default defineComponent({
|
||||
.then((json) => {
|
||||
const tagName = json[0].tag_name
|
||||
const versionNumber = tagName.replace('v', '').replace('-beta', '')
|
||||
this.updateChangelog = marked.parse(json[0].body)
|
||||
|
||||
let changelog = json[0].body
|
||||
// Link usernames to their GitHub profiles
|
||||
.replaceAll(/@(\S+)\b/g, '[@$1](https://github.com/$1)')
|
||||
// Shorten pull request links to #1234
|
||||
.replaceAll(/https:\/\/github\.com\/FreeTubeApp\/FreeTube\/pull\/(\d+)/g, '[#$1]($&)')
|
||||
|
||||
// Add the title
|
||||
changelog = `# ${json[0].name}\n${changelog}`
|
||||
|
||||
this.updateChangelog = marked.parse(changelog)
|
||||
this.changeLogTitle = json[0].name
|
||||
|
||||
this.updateBannerMessage = this.$t('Version {versionNumber} is now available! Click for more details', { versionNumber })
|
||||
|
@ -15,6 +15,7 @@
|
||||
<ft-prompt
|
||||
v-if="showReleaseNotes"
|
||||
:label="changeLogTitle"
|
||||
theme="readable-width"
|
||||
@click="showReleaseNotes = !showReleaseNotes"
|
||||
>
|
||||
<span
|
||||
|
@ -65,7 +65,7 @@ export default defineComponent({
|
||||
default: false
|
||||
}
|
||||
},
|
||||
emits: ['click'],
|
||||
emits: ['click', 'disabled-click'],
|
||||
data: function () {
|
||||
return {
|
||||
dropdownShown: false,
|
||||
@ -92,7 +92,10 @@ export default defineComponent({
|
||||
},
|
||||
|
||||
handleIconClick: function () {
|
||||
if (this.disabled) { return }
|
||||
if (this.disabled) {
|
||||
this.$emit('disabled-click')
|
||||
return
|
||||
}
|
||||
if (this.forceDropdown || (this.dropdownOptions.length > 0)) {
|
||||
this.dropdownShown = !this.dropdownShown
|
||||
|
||||
|
@ -21,19 +21,21 @@
|
||||
background-color: var(--card-bg-color);
|
||||
color: var(--primary-text-color);
|
||||
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--side-nav-hover-color);
|
||||
color: var(--side-nav-hover-text-color);
|
||||
}
|
||||
&:not(.disabled) {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--side-nav-hover-color);
|
||||
color: var(--side-nav-hover-text-color);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--side-nav-active-color);
|
||||
color: var(--side-nav-active-text-color);
|
||||
&:active {
|
||||
background-color: var(--side-nav-active-color);
|
||||
color: var(--side-nav-active-text-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.base-no-default {
|
||||
&.base-no-default:not(.disabled) {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--side-nav-hover-color);
|
||||
@ -50,27 +52,32 @@
|
||||
background-color: var(--primary-color);
|
||||
color: var(--text-with-main-color);
|
||||
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--primary-color-hover);
|
||||
}
|
||||
&:not(.disabled) {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--primary-color-hover);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--primary-color-active);
|
||||
&:active {
|
||||
background-color: var(--primary-color-active);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
&.secondary {
|
||||
background-color: var(--accent-color);
|
||||
color: var(--text-with-accent-color);
|
||||
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--accent-color-hover);
|
||||
}
|
||||
&:not(.disabled) {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--accent-color-hover);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--accent-color-active);
|
||||
&:active {
|
||||
background-color: var(--accent-color-active);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,13 +85,15 @@
|
||||
background-color: var(--destructive-color);
|
||||
color: var(--destructive-text-color);
|
||||
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--destructive-hover-color);
|
||||
}
|
||||
&:not(.disabled) {
|
||||
&:hover,
|
||||
&:focus-visible {
|
||||
background-color: var(--destructive-hover-color);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--destructive-active-color);
|
||||
&:active {
|
||||
background-color: var(--destructive-active-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,7 +104,8 @@
|
||||
|
||||
.disabled {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
pointer-events: auto;
|
||||
cursor: default;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
}"
|
||||
tabindex="0"
|
||||
role="button"
|
||||
:aria-disabled="disabled"
|
||||
:aria-expanded="dropdownShown"
|
||||
@click="handleIconClick"
|
||||
@mousedown="handleIconMouseDown"
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { defineComponent } from 'vue'
|
||||
import FtIconButton from '../ft-icon-button/ft-icon-button.vue'
|
||||
import { mapActions } from 'vuex'
|
||||
import { showToast } from '../../helpers/utils'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'FtListPlaylist',
|
||||
@ -40,6 +41,20 @@ export default defineComponent({
|
||||
return this.$store.getters.getCurrentInvidiousInstance
|
||||
},
|
||||
|
||||
quickBookmarkPlaylistId() {
|
||||
return this.$store.getters.getQuickBookmarkTargetPlaylistId
|
||||
},
|
||||
quickBookmarkPlaylist() {
|
||||
return this.$store.getters.getPlaylist(this.quickBookmarkPlaylistId)
|
||||
},
|
||||
markedAsQuickBookmarkTarget() {
|
||||
// Only user playlists can be target
|
||||
if (this.playlistId == null) { return false }
|
||||
if (this.quickBookmarkPlaylistId == null) { return false }
|
||||
|
||||
return this.quickBookmarkPlaylistId === this.playlistId
|
||||
},
|
||||
|
||||
listType: function () {
|
||||
return this.$store.getters.getListType
|
||||
},
|
||||
@ -112,6 +127,10 @@ export default defineComponent({
|
||||
})
|
||||
},
|
||||
|
||||
handleQuickBookmarkEnabledDisabledClick: function () {
|
||||
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["This playlist is already being used for quick bookmark."]'))
|
||||
},
|
||||
|
||||
parseInvidiousData: function () {
|
||||
this.title = this.data.title
|
||||
if (this.thumbnailCanBeShown) {
|
||||
@ -154,8 +173,34 @@ export default defineComponent({
|
||||
this.videoCount = this.data.videos.length
|
||||
},
|
||||
|
||||
enableQuickBookmarkForThisPlaylist: function () {
|
||||
const currentQuickBookmarkTargetPlaylist = this.quickBookmarkPlaylist
|
||||
|
||||
this.updateQuickBookmarkTargetPlaylistId(this.playlistId)
|
||||
if (currentQuickBookmarkTargetPlaylist != null) {
|
||||
showToast(
|
||||
this.$t('User Playlists.SinglePlaylistView.Toast["This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo"]', {
|
||||
oldPlaylistName: currentQuickBookmarkTargetPlaylist.playlistName,
|
||||
}),
|
||||
5000,
|
||||
() => {
|
||||
this.updateQuickBookmarkTargetPlaylistId(currentQuickBookmarkTargetPlaylist._id)
|
||||
showToast(
|
||||
this.$t('User Playlists.SinglePlaylistView.Toast["Reverted to use {oldPlaylistName} for quick bookmark"]', {
|
||||
oldPlaylistName: currentQuickBookmarkTargetPlaylist.playlistName,
|
||||
}),
|
||||
5000,
|
||||
)
|
||||
},
|
||||
)
|
||||
} else {
|
||||
showToast(this.$t('User Playlists.SinglePlaylistView.Toast.This playlist is now used for quick bookmark'))
|
||||
}
|
||||
},
|
||||
|
||||
...mapActions([
|
||||
'openInExternalPlayer'
|
||||
'openInExternalPlayer',
|
||||
'updateQuickBookmarkTargetPlaylistId'
|
||||
])
|
||||
}
|
||||
})
|
||||
|
@ -67,6 +67,20 @@
|
||||
:use-shadow="false"
|
||||
@click="handleExternalPlayer"
|
||||
/>
|
||||
<span
|
||||
v-if="isUserPlaylist"
|
||||
class="playlistIcons"
|
||||
>
|
||||
<ft-icon-button
|
||||
:title="markedAsQuickBookmarkTarget ? $t('User Playlists.Quick Bookmark Enabled') : $t('User Playlists.Enable Quick Bookmark With This Playlist')"
|
||||
:icon="markedAsQuickBookmarkTarget ? ['fas', 'bookmark'] : ['far', 'bookmark']"
|
||||
:disabled="markedAsQuickBookmarkTarget"
|
||||
:theme="markedAsQuickBookmarkTarget ? 'secondary' : 'base-no-default'"
|
||||
:size="16"
|
||||
@disabled-click="handleQuickBookmarkEnabledDisabledClick"
|
||||
@click="enableQuickBookmarkForThisPlaylist"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -285,28 +285,32 @@ export default defineComponent({
|
||||
{
|
||||
label: this.$t('Video.Open Channel in Invidious'),
|
||||
value: 'openInvidiousChannel'
|
||||
},
|
||||
{
|
||||
type: 'divider'
|
||||
}
|
||||
)
|
||||
|
||||
const hiddenChannels = JSON.parse(this.$store.getters.getChannelsHidden)
|
||||
const channelShouldBeHidden = hiddenChannels.some(c => c === this.channelId)
|
||||
if (channelShouldBeHidden) {
|
||||
options.push({
|
||||
label: this.$t('Video.Unhide Channel'),
|
||||
value: 'unhideChannel'
|
||||
})
|
||||
} else {
|
||||
options.push({
|
||||
label: this.$t('Video.Hide Channel'),
|
||||
value: 'hideChannel'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.channelId !== null) {
|
||||
const hiddenChannels = JSON.parse(this.$store.getters.getChannelsHidden)
|
||||
const channelShouldBeHidden = hiddenChannels.some(c => c === this.channelId)
|
||||
|
||||
options.push(
|
||||
{
|
||||
type: 'divider'
|
||||
},
|
||||
|
||||
channelShouldBeHidden
|
||||
? {
|
||||
label: this.$t('Video.Unhide Channel'),
|
||||
value: 'unhideChannel'
|
||||
}
|
||||
: {
|
||||
label: this.$t('Video.Hide Channel'),
|
||||
value: 'hideChannel'
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
return options
|
||||
},
|
||||
|
||||
@ -666,7 +670,7 @@ export default defineComponent({
|
||||
this.uploadedTime = new Date(this.data.published).toLocaleDateString([this.currentLocale, 'en'])
|
||||
} else {
|
||||
// Use 30 days per month, just like calculatePublishedDate
|
||||
this.uploadedTime = getRelativeTimeFromDate(new Date(this.data.published), false)
|
||||
this.uploadedTime = getRelativeTimeFromDate(this.data.published, false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,6 +47,13 @@
|
||||
padding-block: 10px;
|
||||
}
|
||||
|
||||
.promptCard.readable-width {
|
||||
max-inline-size: 50em;
|
||||
margin-inline: auto;
|
||||
inset-inline: 0;
|
||||
padding-inline: 0;
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ export default defineComponent({
|
||||
this.$emit('click', null)
|
||||
},
|
||||
handleHide: function (event) {
|
||||
if (event.target.getAttribute('role') === 'button' || event.target.className === 'prompt') {
|
||||
if (event.target.className === 'prompt') {
|
||||
this.hide()
|
||||
}
|
||||
},
|
||||
|
@ -14,7 +14,8 @@
|
||||
:select-names="colorNames"
|
||||
:select-values="colorValues"
|
||||
:icon="['fas', 'palette']"
|
||||
:icon-color="sponsorBlockValues.color"
|
||||
:class="'sec' + sponsorBlockValues.color"
|
||||
icon-color="var(--accent-color)"
|
||||
@change="updateColor"
|
||||
/>
|
||||
<ft-select
|
||||
|
@ -230,9 +230,6 @@ export default defineComponent({
|
||||
quickBookmarkPlaylist() {
|
||||
return this.$store.getters.getPlaylist(this.quickBookmarkPlaylistId)
|
||||
},
|
||||
quickBookmarkEnabled() {
|
||||
return this.quickBookmarkPlaylist != null
|
||||
},
|
||||
markedAsQuickBookmarkTarget() {
|
||||
// Only user playlists can be target
|
||||
if (this.selectedUserPlaylist == null) { return false }
|
||||
@ -240,6 +237,9 @@ export default defineComponent({
|
||||
|
||||
return this.quickBookmarkPlaylist._id === this.selectedUserPlaylist._id
|
||||
},
|
||||
playlistDeletionDisabledLabel: function () {
|
||||
return this.$t('User Playlists["Cannot delete the quick bookmark target playlist."]')
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
showDeletePlaylistPrompt(shown) {
|
||||
@ -319,6 +319,14 @@ export default defineComponent({
|
||||
})
|
||||
},
|
||||
|
||||
handleQuickBookmarkEnabledDisabledClick: function () {
|
||||
showToast(this.$t('User Playlists.SinglePlaylistView.Toast["This playlist is already being used for quick bookmark."]'))
|
||||
},
|
||||
|
||||
handlePlaylistDeleteDisabledClick: function () {
|
||||
showToast(this.playlistDeletionDisabledLabel)
|
||||
},
|
||||
|
||||
exitEditMode: function () {
|
||||
this.editMode = false
|
||||
|
||||
@ -402,10 +410,6 @@ export default defineComponent({
|
||||
showToast(this.$t('User Playlists.SinglePlaylistView.Toast.This playlist is now used for quick bookmark'))
|
||||
}
|
||||
},
|
||||
disableQuickBookmark() {
|
||||
this.updateQuickBookmarkTargetPlaylistId(null)
|
||||
showToast(this.$t('User Playlists.SinglePlaylistView.Toast.Quick bookmark disabled'))
|
||||
},
|
||||
|
||||
updateQuery(query) {
|
||||
this.query = query
|
||||
|
@ -123,7 +123,15 @@
|
||||
theme="secondary"
|
||||
@click="exitEditMode"
|
||||
/>
|
||||
|
||||
<ft-icon-button
|
||||
v-if="!editMode && isUserPlaylist"
|
||||
:title="markedAsQuickBookmarkTarget ? $t('User Playlists.Quick Bookmark Enabled') : $t('User Playlists.Enable Quick Bookmark With This Playlist')"
|
||||
:icon="markedAsQuickBookmarkTarget ? ['fas', 'bookmark'] : ['far', 'bookmark']"
|
||||
:disabled="markedAsQuickBookmarkTarget"
|
||||
:theme="markedAsQuickBookmarkTarget ? 'secondary' : 'base-no-default'"
|
||||
@disabled-click="handleQuickBookmarkEnabledDisabledClick"
|
||||
@click="enableQuickBookmarkForThisPlaylist"
|
||||
/>
|
||||
<ft-icon-button
|
||||
v-if="!editMode && isUserPlaylist"
|
||||
:title="$t('User Playlists.Edit Playlist Info')"
|
||||
@ -138,20 +146,6 @@
|
||||
theme="secondary"
|
||||
@click="toggleCopyVideosPrompt"
|
||||
/>
|
||||
<ft-icon-button
|
||||
v-if="!editMode && isUserPlaylist && !markedAsQuickBookmarkTarget"
|
||||
:title="$t('User Playlists.Enable Quick Bookmark With This Playlist')"
|
||||
:icon="['fas', 'link']"
|
||||
theme="secondary"
|
||||
@click="enableQuickBookmarkForThisPlaylist"
|
||||
/>
|
||||
<ft-icon-button
|
||||
v-if="!editMode && isUserPlaylist && markedAsQuickBookmarkTarget"
|
||||
:title="$t('User Playlists.Disable Quick Bookmark')"
|
||||
:icon="['fas', 'link-slash']"
|
||||
theme="secondary"
|
||||
@click="disableQuickBookmark"
|
||||
/>
|
||||
<ft-icon-button
|
||||
v-if="!editMode && isUserPlaylist && videoCount > 0"
|
||||
:title="$t('User Playlists.Remove Watched Videos')"
|
||||
@ -161,9 +155,11 @@
|
||||
/>
|
||||
<ft-icon-button
|
||||
v-if="deletePlaylistButtonVisible"
|
||||
:title="$t('User Playlists.Delete Playlist')"
|
||||
:disabled="markedAsQuickBookmarkTarget"
|
||||
:title="!markedAsQuickBookmarkTarget ? $t('User Playlists.Delete Playlist') : playlistDeletionDisabledLabel"
|
||||
:icon="['fas', 'trash']"
|
||||
theme="destructive"
|
||||
@disabled-click="handlePlaylistDeleteDisabledClick"
|
||||
@click="showDeletePlaylistPrompt = true"
|
||||
/>
|
||||
<ft-share-button
|
||||
|
@ -30,16 +30,20 @@ export default defineComponent({
|
||||
'restart',
|
||||
'cancel'
|
||||
],
|
||||
/* Themes are devided into 3 groups. The first group contains the default themes. The second group are themes that don't have specific primary and secondary colors. The third group are themes that do have specific primary and secondary colors available. */
|
||||
baseThemeValues: [
|
||||
// First group
|
||||
'system',
|
||||
'light',
|
||||
'dark',
|
||||
'black',
|
||||
'dracula',
|
||||
'catppuccinMocha',
|
||||
'pastelPink',
|
||||
'hotPink',
|
||||
// Second group
|
||||
'nordic',
|
||||
'hotPink',
|
||||
'pastelPink',
|
||||
// Third group
|
||||
'catppuccinMocha',
|
||||
'dracula',
|
||||
'solarizedDark',
|
||||
'solarizedLight'
|
||||
]
|
||||
@ -97,17 +101,21 @@ export default defineComponent({
|
||||
]
|
||||
},
|
||||
|
||||
/* Themes are devided into 3 groups. The first group contains the default themes. The second group are themes that don't have specific primary and secondary colors. The third group are themes that do have specific primary and secondary colors available. */
|
||||
baseThemeNames: function () {
|
||||
return [
|
||||
// First group
|
||||
this.$t('Settings.Theme Settings.Base Theme.System Default'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Light'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Dark'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Black'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Dracula'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Catppuccin Mocha'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Pastel Pink'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Hot Pink'),
|
||||
// Second group
|
||||
this.$t('Settings.Theme Settings.Base Theme.Nordic'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Hot Pink'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Pastel Pink'),
|
||||
// Third group
|
||||
this.$t('Settings.Theme Settings.Base Theme.Catppuccin Mocha'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Dracula'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Solarized Dark'),
|
||||
this.$t('Settings.Theme Settings.Base Theme.Solarized Light')
|
||||
]
|
||||
|
@ -1,43 +1,21 @@
|
||||
import fs from 'fs/promises'
|
||||
import path from 'path'
|
||||
import { IpcChannels } from '../../../constants'
|
||||
|
||||
import { pathExists } from '../filesystem'
|
||||
|
||||
// based off https://github.com/LuanRT/YouTube.js/blob/6caa679df6ddc77d25be02dcb7355b722ab268aa/src/utils/Cache.ts
|
||||
// avoids errors caused by the fully dynamic `fs` and `path` module imports that youtubei.js's UniversalCache does
|
||||
export class PlayerCache {
|
||||
constructor(cacheDirectory) {
|
||||
this.cacheDirectory = cacheDirectory
|
||||
}
|
||||
|
||||
async get(key) {
|
||||
const filePath = path.resolve(this.cacheDirectory, key)
|
||||
|
||||
try {
|
||||
const contents = await fs.readFile(filePath)
|
||||
return contents.buffer
|
||||
} catch (e) {
|
||||
if (e?.code === 'ENOENT') {
|
||||
return undefined
|
||||
}
|
||||
throw e
|
||||
if (process.env.IS_ELECTRON) {
|
||||
const { ipcRenderer } = require('electron')
|
||||
return await ipcRenderer.invoke(IpcChannels.PLAYER_CACHE_GET, key)
|
||||
}
|
||||
}
|
||||
|
||||
async set(key, value) {
|
||||
await fs.mkdir(this.cacheDirectory, { recursive: true })
|
||||
|
||||
const filePath = path.resolve(this.cacheDirectory, key)
|
||||
await fs.writeFile(filePath, new Uint8Array(value))
|
||||
}
|
||||
|
||||
async remove(key) {
|
||||
const filePath = path.resolve(this.cacheDirectory, key)
|
||||
|
||||
if (await pathExists(filePath)) {
|
||||
try {
|
||||
await fs.unlink(filePath)
|
||||
} catch { }
|
||||
if (process.env.IS_ELECTRON) {
|
||||
const { ipcRenderer } = require('electron')
|
||||
await ipcRenderer.invoke(IpcChannels.PLAYER_CACHE_SET, key, value)
|
||||
}
|
||||
}
|
||||
|
||||
async remove(_key) {
|
||||
// no-op; YouTube.js only uses remove for the OAuth credentials, but we don't use that in FreeTube
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { ClientType, Endpoints, Innertube, Misc, UniversalCache, Utils, YT } from 'youtubei.js'
|
||||
import Autolinker from 'autolinker'
|
||||
import { join } from 'path'
|
||||
import { SEARCH_CHAR_LIMIT } from '../../../constants'
|
||||
|
||||
import { PlayerCache } from './PlayerCache'
|
||||
@ -9,7 +8,6 @@ import {
|
||||
calculatePublishedDate,
|
||||
escapeHTML,
|
||||
extractNumberFromString,
|
||||
getUserDataPath,
|
||||
toLocalePublicationString
|
||||
} from '../utils'
|
||||
|
||||
@ -41,8 +39,7 @@ async function createInnertube({ withPlayer = false, location = undefined, safet
|
||||
let cache
|
||||
if (withPlayer) {
|
||||
if (process.env.IS_ELECTRON) {
|
||||
const userData = await getUserDataPath()
|
||||
cache = new PlayerCache(join(userData, 'player_cache'))
|
||||
cache = new PlayerCache()
|
||||
} else {
|
||||
cache = new UniversalCache(false)
|
||||
}
|
||||
|
@ -17,13 +17,6 @@ export const colors = [
|
||||
{ name: 'Amber', value: '#FFAB00' },
|
||||
{ name: 'Orange', value: '#FF6D00' },
|
||||
{ name: 'DeepOrange', value: '#DD2C00' },
|
||||
{ name: 'DraculaCyan', value: '#8BE9FD' },
|
||||
{ name: 'DraculaGreen', value: '#50FA7B' },
|
||||
{ name: 'DraculaOrange', value: '#FFB86C' },
|
||||
{ name: 'DraculaPink', value: '#FF79C6' },
|
||||
{ name: 'DraculaPurple', value: '#BD93F9' },
|
||||
{ name: 'DraculaRed', value: '#FF5555' },
|
||||
{ name: 'DraculaYellow', value: '#F1FA8C' },
|
||||
{ name: 'CatppuccinMochaRosewater', value: '#F5E0DC' },
|
||||
{ name: 'CatppuccinMochaFlamingo', value: '#F2CDCD' },
|
||||
{ name: 'CatppuccinMochaPink', value: '#F5C2E7' },
|
||||
@ -38,6 +31,13 @@ export const colors = [
|
||||
{ name: 'CatppuccinMochaSapphire', value: '#74C7EC' },
|
||||
{ name: 'CatppuccinMochaBlue', value: '#89B4FA' },
|
||||
{ name: 'CatppuccinMochaLavender', value: '#B4BEFE' },
|
||||
{ name: 'DraculaCyan', value: '#8BE9FD' },
|
||||
{ name: 'DraculaGreen', value: '#50FA7B' },
|
||||
{ name: 'DraculaOrange', value: '#FFB86C' },
|
||||
{ name: 'DraculaPink', value: '#FF79C6' },
|
||||
{ name: 'DraculaPurple', value: '#BD93F9' },
|
||||
{ name: 'DraculaRed', value: '#FF5555' },
|
||||
{ name: 'DraculaYellow', value: '#F1FA8C' },
|
||||
{ name: 'SolarizedYellow', value: '#b58900' },
|
||||
{ name: 'SolarizedOrange', value: '#cb4b16' },
|
||||
{ name: 'SolarizedRed', value: '#dc322f' },
|
||||
@ -66,13 +66,6 @@ export function getColorTranslations() {
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Amber'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Orange'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Deep Orange'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Cyan'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Green'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Orange'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Pink'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Purple'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Red'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Yellow'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Rosewater'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Flamingo'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Pink'),
|
||||
@ -87,6 +80,13 @@ export function getColorTranslations() {
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Sapphire'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Blue'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Catppuccin Mocha Lavender'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Cyan'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Green'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Orange'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Pink'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Purple'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Red'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Dracula Yellow'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Solarized Yellow'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Solarized Orange'),
|
||||
i18n.t('Settings.Theme Settings.Main Color Theme.Solarized Red'),
|
||||
|
@ -611,16 +611,6 @@ export async function getSystemLocale() {
|
||||
return locale || 'en-US'
|
||||
}
|
||||
|
||||
export async function getUserDataPath() {
|
||||
if (process.env.IS_ELECTRON) {
|
||||
const { ipcRenderer } = require('electron')
|
||||
return await ipcRenderer.invoke(IpcChannels.GET_USER_DATA_PATH)
|
||||
} else {
|
||||
// TODO: implement getUserDataPath web compatible callback
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export async function getPicturesPath() {
|
||||
if (process.env.IS_ELECTRON) {
|
||||
const { ipcRenderer } = require('electron')
|
||||
|
@ -8,6 +8,8 @@ import { library } from '@fortawesome/fontawesome-svg-core'
|
||||
|
||||
import { register as registerSwiper } from 'swiper/element'
|
||||
|
||||
import { ObserveVisibility } from 'vue-observe-visibility'
|
||||
|
||||
// Please keep the list of constants sorted by name
|
||||
// to avoid code conflict and duplicate entries
|
||||
import {
|
||||
@ -89,6 +91,9 @@ import {
|
||||
faTrash,
|
||||
faUsers,
|
||||
} from '@fortawesome/free-solid-svg-icons'
|
||||
import {
|
||||
faBookmark as farBookmark
|
||||
} from '@fortawesome/free-regular-svg-icons'
|
||||
import {
|
||||
faBitcoin,
|
||||
faGithub,
|
||||
@ -185,6 +190,9 @@ library.add(
|
||||
faTrash,
|
||||
faUsers,
|
||||
|
||||
// solid icons
|
||||
farBookmark,
|
||||
|
||||
// brand icons
|
||||
faGithub,
|
||||
faBitcoin,
|
||||
@ -195,6 +203,7 @@ library.add(
|
||||
registerSwiper()
|
||||
|
||||
Vue.component('FontAwesomeIcon', FontAwesomeIcon)
|
||||
Vue.directive('observe-visibility', ObserveVisibility)
|
||||
|
||||
/* eslint-disable-next-line no-new */
|
||||
new Vue({
|
||||
|
@ -10,11 +10,11 @@ const state = {
|
||||
}
|
||||
|
||||
const getters = {
|
||||
getHistoryCacheSorted: () => {
|
||||
getHistoryCacheSorted(state) {
|
||||
return state.historyCacheSorted
|
||||
},
|
||||
|
||||
getHistoryCacheById: () => {
|
||||
getHistoryCacheById(state) {
|
||||
return state.historyCacheById
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,26 @@ function generateRandomUniqueId() {
|
||||
return crypto.randomUUID ? crypto.randomUUID() : `id-${Date.now()}-${Math.floor(Math.random() * 10000)}`
|
||||
}
|
||||
|
||||
/*
|
||||
* Function to find the first playlist with 0 videos, or otherwise the most recently accessed.
|
||||
* This is a good default quick bookmark target if one needs to be set.
|
||||
*/
|
||||
function findEmptyOrLatestPlayedPlaylist(playlists) {
|
||||
const emptyPlaylist = playlists.find((playlist) => playlist.videos.length === 0)
|
||||
if (emptyPlaylist) return emptyPlaylist
|
||||
|
||||
let max = -1
|
||||
let maxIndex = 0
|
||||
for (let i = 0; i < playlists.length; i++) {
|
||||
if (playlists[i].lastPlayedAt != null && playlists[i].lastPlayedAt > max) {
|
||||
maxIndex = i
|
||||
max = playlists[i].lastPlayedAt
|
||||
}
|
||||
}
|
||||
|
||||
return playlists[maxIndex]
|
||||
}
|
||||
|
||||
const state = {
|
||||
// Playlist loading takes time on app load (new windows)
|
||||
// This is necessary to let components to know when to start data loading
|
||||
@ -38,15 +58,15 @@ const state = {
|
||||
}
|
||||
|
||||
const getters = {
|
||||
getPlaylistsReady: () => state.playlistsReady,
|
||||
getAllPlaylists: () => state.playlists,
|
||||
getPlaylistsReady: (state) => state.playlistsReady,
|
||||
getAllPlaylists: (state) => state.playlists,
|
||||
getPlaylist: (state) => (playlistId) => {
|
||||
return state.playlists.find(playlist => playlist._id === playlistId)
|
||||
},
|
||||
}
|
||||
|
||||
const actions = {
|
||||
async addPlaylist({ commit }, payload) {
|
||||
async addPlaylist({ state, commit, rootState, dispatch }, payload) {
|
||||
// In case internal id is forgotten, generate one (instead of relying on caller and have a chance to cause data corruption)
|
||||
if (payload._id == null) {
|
||||
// {Time now in unix time}-{0-9999}
|
||||
@ -79,15 +99,28 @@ const actions = {
|
||||
|
||||
try {
|
||||
await DBPlaylistHandlers.create([payload])
|
||||
|
||||
const noQuickBookmarkSet = !rootState.settings.quickBookmarkTargetPlaylistId || !state.playlists.some((playlist) => playlist._id === rootState.settings.quickBookmarkTargetPlaylistId)
|
||||
if (noQuickBookmarkSet) {
|
||||
dispatch('updateQuickBookmarkTargetPlaylistId', payload._id, { root: true })
|
||||
}
|
||||
|
||||
commit('addPlaylist', payload)
|
||||
} catch (errMessage) {
|
||||
console.error(errMessage)
|
||||
}
|
||||
},
|
||||
|
||||
async addPlaylists({ commit }, payload) {
|
||||
async addPlaylists({ state, commit, rootState, dispatch }, payload) {
|
||||
try {
|
||||
await DBPlaylistHandlers.create(payload)
|
||||
|
||||
const noQuickBookmarkSet = !rootState.settings.quickBookmarkTargetPlaylistId || !state.playlists.some((playlist) => playlist._id === rootState.settings.quickBookmarkTargetPlaylistId)
|
||||
if (noQuickBookmarkSet) {
|
||||
const chosenPlaylist = findEmptyOrLatestPlayedPlaylist(payload)
|
||||
dispatch('updateQuickBookmarkTargetPlaylistId', chosenPlaylist._id, { root: true })
|
||||
}
|
||||
|
||||
commit('addPlaylists', payload)
|
||||
} catch (errMessage) {
|
||||
console.error(errMessage)
|
||||
@ -185,7 +218,7 @@ const actions = {
|
||||
}
|
||||
},
|
||||
|
||||
async grabAllPlaylists({ commit, dispatch, state }) {
|
||||
async grabAllPlaylists({ rootState, commit, dispatch, state }) {
|
||||
try {
|
||||
const payload = (await DBPlaylistHandlers.find()).filter((e) => e != null)
|
||||
if (payload.length === 0) {
|
||||
@ -308,6 +341,13 @@ const actions = {
|
||||
}
|
||||
}
|
||||
|
||||
// if no quick bookmark is set, try to find another playlist
|
||||
const noQuickBookmarkSet = !rootState.settings.quickBookmarkTargetPlaylistId || !payload.some((playlist) => playlist._id === rootState.settings.quickBookmarkTargetPlaylistId)
|
||||
if (noQuickBookmarkSet && payload.length > 0) {
|
||||
const chosenPlaylist = findEmptyOrLatestPlayedPlaylist(payload)
|
||||
dispatch('updateQuickBookmarkTargetPlaylistId', chosenPlaylist._id, { root: true })
|
||||
}
|
||||
|
||||
commit('setAllPlaylists', payload)
|
||||
}
|
||||
commit('setPlaylistsReady', true)
|
||||
|
@ -15,7 +15,7 @@ const state = {
|
||||
}
|
||||
|
||||
const getters = {
|
||||
getProfileList: () => {
|
||||
getProfileList: (state) => {
|
||||
return state.profileList
|
||||
},
|
||||
|
||||
|
@ -5,7 +5,7 @@ const state = {
|
||||
}
|
||||
|
||||
const getters = {
|
||||
getPageBookmarks: () => {
|
||||
getPageBookmarks: (state) => () => {
|
||||
return state.pageBookmarks
|
||||
},
|
||||
|
||||
|
@ -61,19 +61,19 @@ const state = {
|
||||
}
|
||||
|
||||
const getters = {
|
||||
getIsSideNavOpen () {
|
||||
getIsSideNavOpen(state) {
|
||||
return state.isSideNavOpen
|
||||
},
|
||||
|
||||
getOutlinesHidden() {
|
||||
getOutlinesHidden(state) {
|
||||
return state.outlinesHidden
|
||||
},
|
||||
|
||||
getCurrentVolume () {
|
||||
getCurrentVolume(state) {
|
||||
return state.currentVolume
|
||||
},
|
||||
|
||||
getSessionSearchHistory () {
|
||||
getSessionSearchHistory(state) {
|
||||
return state.sessionSearchHistory
|
||||
},
|
||||
|
||||
@ -81,91 +81,91 @@ const getters = {
|
||||
return state.deArrowCache
|
||||
},
|
||||
|
||||
getPopularCache () {
|
||||
getPopularCache(state) {
|
||||
return state.popularCache
|
||||
},
|
||||
|
||||
getTrendingCache () {
|
||||
getTrendingCache(state) {
|
||||
return state.trendingCache
|
||||
},
|
||||
|
||||
getCachedPlaylist() {
|
||||
getCachedPlaylist(state) {
|
||||
return state.cachedPlaylist
|
||||
},
|
||||
|
||||
getSearchSettings () {
|
||||
getSearchSettings(state) {
|
||||
return state.searchSettings
|
||||
},
|
||||
|
||||
getSearchFilterValueChanged () {
|
||||
getSearchFilterValueChanged(state) {
|
||||
return state.searchFilterValueChanged
|
||||
},
|
||||
|
||||
getShowAddToPlaylistPrompt () {
|
||||
getShowAddToPlaylistPrompt(state) {
|
||||
return state.showAddToPlaylistPrompt
|
||||
},
|
||||
|
||||
getShowCreatePlaylistPrompt () {
|
||||
getShowCreatePlaylistPrompt(state) {
|
||||
return state.showCreatePlaylistPrompt
|
||||
},
|
||||
|
||||
getShowPageBookmarkPrompt () {
|
||||
getShowPageBookmarkPrompt(state) {
|
||||
return state.showPageBookmarkPrompt
|
||||
},
|
||||
|
||||
getShowSearchFilters () {
|
||||
getShowSearchFilters(state) {
|
||||
return state.showSearchFilters
|
||||
},
|
||||
|
||||
getToBeAddedToPlaylistVideoList () {
|
||||
getToBeAddedToPlaylistVideoList(state) {
|
||||
return state.toBeAddedToPlaylistVideoList
|
||||
},
|
||||
|
||||
getNewPlaylistDefaultProperties () {
|
||||
getNewPlaylistDefaultProperties(state) {
|
||||
return state.newPlaylistDefaultProperties
|
||||
},
|
||||
|
||||
getNewPlaylistVideoObject () {
|
||||
getNewPlaylistVideoObject(state) {
|
||||
return state.newPlaylistVideoObject
|
||||
},
|
||||
|
||||
getShowProgressBar () {
|
||||
getShowProgressBar(state) {
|
||||
return state.showProgressBar
|
||||
},
|
||||
|
||||
getProgressBarPercentage () {
|
||||
getProgressBarPercentage(state) {
|
||||
return state.progressBarPercentage
|
||||
},
|
||||
|
||||
getRegionNames () {
|
||||
getRegionNames(state) {
|
||||
return state.regionNames
|
||||
},
|
||||
|
||||
getRegionValues () {
|
||||
getRegionValues(state) {
|
||||
return state.regionValues
|
||||
},
|
||||
|
||||
getRecentBlogPosts () {
|
||||
getRecentBlogPosts(state) {
|
||||
return state.recentBlogPosts
|
||||
},
|
||||
|
||||
getExternalPlayerNames () {
|
||||
getExternalPlayerNames(state) {
|
||||
return state.externalPlayerNames
|
||||
},
|
||||
|
||||
getExternalPlayerValues () {
|
||||
getExternalPlayerValues(state) {
|
||||
return state.externalPlayerValues
|
||||
},
|
||||
|
||||
getExternalPlayerCmdArguments () {
|
||||
getExternalPlayerCmdArguments (state) {
|
||||
return state.externalPlayerCmdArguments
|
||||
},
|
||||
|
||||
getLastTrendingRefreshTimestamp() {
|
||||
getLastTrendingRefreshTimestamp(state) {
|
||||
return state.lastTrendingRefreshTimestamp
|
||||
},
|
||||
|
||||
getLastPopularRefreshTimestamp() {
|
||||
getLastPopularRefreshTimestamp(state) {
|
||||
return state.lastPopularRefreshTimestamp
|
||||
},
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
<template>
|
||||
<div
|
||||
ref="search"
|
||||
>
|
||||
<div>
|
||||
<ft-loader
|
||||
v-if="isLoading && !errorMessage"
|
||||
:fullscreen="true"
|
||||
|
@ -1,7 +1,5 @@
|
||||
<template>
|
||||
<div
|
||||
ref="search"
|
||||
>
|
||||
<div>
|
||||
<ft-loader
|
||||
v-if="isLoading"
|
||||
:fullscreen="true"
|
||||
|
@ -282,6 +282,8 @@ Settings:
|
||||
Pastel Pink: الباستيل الوردي
|
||||
Hot Pink: وردي فاقع
|
||||
Nordic: بلدان الشمال الأوروبي
|
||||
Solarized Dark: مظلم مشمس
|
||||
Solarized Light: مشمس داكن
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'لون السِمة الأساسي'
|
||||
Red: 'أحمر'
|
||||
@ -321,6 +323,14 @@ Settings:
|
||||
Catppuccin Mocha Red: كاتبوتشين موكا أحمر
|
||||
Catppuccin Mocha Maroon: كاتبوتشين موكا مارون
|
||||
Catppuccin Mocha Yellow: كاتبوتشين موكا أصفر
|
||||
Solarized Yellow: مشمس فاتح
|
||||
Solarized Orange: مشمس برتقالي
|
||||
Solarized Red: مشمس أحمر
|
||||
Solarized Magenta: مشمس أرجواني
|
||||
Solarized Violet: مشمس بنفسجي
|
||||
Solarized Blue: مشمس أزرق
|
||||
Solarized Cyan: مشمس سماوي
|
||||
Solarized Green: مشمس أخضر
|
||||
Secondary Color Theme: 'لون السِمة الثانوي'
|
||||
#* Main Color Theme
|
||||
UI Scale: مقياس واجهة المستخدم
|
||||
@ -679,6 +689,8 @@ About:
|
||||
Downloads / Changelog: التحميلات\التغييرات
|
||||
Licensed under the AGPLv3: مرخّص تحت رخصة أفيرو جيبيإل النسخة الثالثة
|
||||
Discussions: المناقشات
|
||||
Licensed under the: مرخص تحت
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
All Channels: 'جميع القنوات'
|
||||
Profile Manager: 'مدير الملف الشخصي'
|
||||
|
@ -277,6 +277,9 @@ Settings:
|
||||
Ask Before Opening Link: Питане, преди отворяне на връзка
|
||||
Open Link: Отваряне на връзка
|
||||
External Link Handling: Работа с външни връзки
|
||||
Auto Load Next Page:
|
||||
Label: Автоматично зареждане на следващата страница
|
||||
Tooltip: Автоматично зареждане на допълнителни страници и коментари.
|
||||
Theme Settings:
|
||||
Theme Settings: 'Настройки на изгледа на приложението'
|
||||
Match Top Bar with Main Color: 'Съвпадане на горната лента с основната цветова
|
||||
@ -292,6 +295,8 @@ Settings:
|
||||
Pastel Pink: Пастелно розово
|
||||
Hot Pink: Горещо розово
|
||||
Nordic: Nordic
|
||||
Solarized Dark: Solarized тъмна
|
||||
Solarized Light: Solarized светла
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Основна цветова тема'
|
||||
Red: 'Червено'
|
||||
@ -331,6 +336,14 @@ Settings:
|
||||
Catppuccin Mocha Lavender: Catppuccin Mocha Лавандула
|
||||
Catppuccin Mocha Blue: Catppuccin Mocha Синьо
|
||||
Catppuccin Mocha Green: Catppuccin Mocha Зелено
|
||||
Solarized Yellow: Solarized жълта
|
||||
Solarized Orange: Solarized оранжева
|
||||
Solarized Red: Solarized червена
|
||||
Solarized Magenta: Solarized пурпурна
|
||||
Solarized Violet: Solarized виолетова
|
||||
Solarized Blue: Solarized синя
|
||||
Solarized Cyan: Solarized синьо-зелена
|
||||
Solarized Green: Solarized зелена
|
||||
Secondary Color Theme: 'Вторична цветова тема'
|
||||
#* Main Color Theme
|
||||
UI Scale: Мащаб на интерфейса
|
||||
@ -637,6 +650,7 @@ Settings:
|
||||
Unlock: Отключване
|
||||
Password: Парола
|
||||
Expand All Settings Sections: Разширяване на всички раздели с настройки
|
||||
Sort Settings Sections (A-Z): Сортиране на секциите на настройките (A-Z)
|
||||
About:
|
||||
#On About page
|
||||
About: 'Относно'
|
||||
@ -693,6 +707,8 @@ About:
|
||||
Beta: Бета
|
||||
Credits: Заслуги
|
||||
Discussions: Дискусии
|
||||
Licensed under the: Лицензирано под
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
Profile Select: 'Избор на профил'
|
||||
All Channels: 'Всички канали'
|
||||
@ -971,6 +987,15 @@ Playlist:
|
||||
#* Published
|
||||
#& Views
|
||||
Playlist: Плейлист
|
||||
Sort By:
|
||||
DateAddedNewest: Първо последно добавени
|
||||
DateAddedOldest: Първо най-рано добавени
|
||||
Sort By: Подреждане по
|
||||
AuthorAscending: Автор (A-Z)
|
||||
AuthorDescending: Автор (Z-A)
|
||||
VideoTitleAscending: Заглавие (A-Z)
|
||||
Custom: Потребителски
|
||||
VideoTitleDescending: Заглавие (Z-A)
|
||||
Toggle Theatre Mode: 'Режим "Широк екран"'
|
||||
Change Format:
|
||||
Change Media Formats: 'Смяна видео формати'
|
||||
@ -1194,3 +1219,15 @@ Age Restricted:
|
||||
This channel is age restricted: Този канал е с възрастово ограничение
|
||||
This video is age restricted: Това видео е с възрастово ограничение
|
||||
Close Banner: Затваряне на банер
|
||||
Search character limit: Заявката за търсене е над лимита от {searchCharacterLimit}
|
||||
символа
|
||||
Feed:
|
||||
Feed Last Updated: '{feedName} последната актуализация на емисията: {date}'
|
||||
Refresh Feed: Обновяване на {subscriptionName}
|
||||
Yes, Delete: Да, изтрий
|
||||
Yes, Restart: Да, рестартирай
|
||||
Yes, Open Link: Да, отваряне на връзката
|
||||
Cancel: Отказ
|
||||
Moments Ago: преди няколко минути
|
||||
checkmark: ✓
|
||||
Display Label: '{label}: {value}'
|
||||
|
@ -300,6 +300,8 @@ Settings:
|
||||
Hot Pink: Pink
|
||||
Pastel Pink: Pastellrosa
|
||||
Nordic: Nordic
|
||||
Solarized Dark: Solarisiert Dunkel
|
||||
Solarized Light: Solarisiert Hell
|
||||
Main Color Theme:
|
||||
Main Color Theme: Hauptfarbe des Farbschemas
|
||||
Red: Rot
|
||||
@ -339,6 +341,14 @@ Settings:
|
||||
Catppuccin Mocha Red: Catppuccin Mocha Rot
|
||||
Catppuccin Mocha Maroon: Catppuccin Mocha Kastanienbraun
|
||||
Catppuccin Mocha Teal: Catppuccin Mokka Blaugrün
|
||||
Solarized Red: Solarisiertes Rot
|
||||
Solarized Yellow: Solarisiertes Gelb
|
||||
Solarized Orange: Solarisiertes Orange
|
||||
Solarized Magenta: Solarisiertes Magenta
|
||||
Solarized Blue: Solarisiertes Blau
|
||||
Solarized Cyan: Solarisiertes Cyan
|
||||
Solarized Violet: Solarisiertes Violett
|
||||
Solarized Green: Solarisiertes Grün
|
||||
Secondary Color Theme: Sekundäres Farbschema
|
||||
#* Main Color Theme
|
||||
UI Scale: Skalierung der Benutzeroberfläche
|
||||
@ -724,6 +734,8 @@ About:
|
||||
Licensed under the AGPLv3: Lizenziert unter der AGPLv3
|
||||
Source code: Quellcode
|
||||
Discussions: Diskussionen
|
||||
Licensed under the: Lizenziert unter der
|
||||
AGPLv3: AGPLv3
|
||||
Channel:
|
||||
Subscribe: Abonnieren
|
||||
Unsubscribe: Deabonnieren
|
||||
|
@ -173,9 +173,10 @@ User Playlists:
|
||||
Copy Playlist: Copy Playlist
|
||||
Remove Watched Videos: Remove Watched Videos
|
||||
Enable Quick Bookmark With This Playlist: Enable Quick Bookmark With This Playlist
|
||||
Disable Quick Bookmark: Disable Quick Bookmark
|
||||
Quick Bookmark Enabled: Quick Bookmark Enabled
|
||||
Are you sure you want to remove all watched videos from this playlist? This cannot be undone: Are you sure you want to remove all watched videos from this playlist? This cannot be undone.
|
||||
Delete Playlist: Delete Playlist
|
||||
Cannot delete the quick bookmark target playlist.: Cannot delete the quick bookmark target playlist.
|
||||
Are you sure you want to delete this playlist? This cannot be undone: Are you sure you want to delete this playlist? This cannot be undone.
|
||||
|
||||
Sort By:
|
||||
@ -201,8 +202,8 @@ User Playlists:
|
||||
Video has been removed: Video has been removed
|
||||
There was a problem with removing this video: There was a problem with removing this video
|
||||
|
||||
This playlist is already being used for quick bookmark.: This playlist is already being used for quick bookmark.
|
||||
This playlist is now used for quick bookmark: This playlist is now used for quick bookmark
|
||||
Quick bookmark disabled: Quick bookmark disabled
|
||||
This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo
|
||||
Reverted to use {oldPlaylistName} for quick bookmark: Reverted to use {oldPlaylistName} for quick bookmark
|
||||
|
||||
@ -214,6 +215,7 @@ User Playlists:
|
||||
There were no videos to remove.: There were no videos to remove.
|
||||
This playlist is protected and cannot be removed.: This playlist is protected and cannot be removed.
|
||||
Playlist {playlistName} has been deleted.: Playlist {playlistName} has been deleted.
|
||||
Playlist {playlistName} is the new quick bookmark playlist.: Playlist {playlistName} is the new quick bookmark playlist.
|
||||
|
||||
This playlist does not exist: This playlist does not exist
|
||||
AddVideoPrompt:
|
||||
|
@ -1158,3 +1158,6 @@ Channel Hidden: '{channel} added to channel filter'
|
||||
Channel Unhidden: '{channel} removed from channel filter'
|
||||
Trimmed input must be at least N characters long: Trimmed input must be at least 1
|
||||
character long | Trimmed input must be at least {length} characters long
|
||||
Yes, Delete: Yes, delete
|
||||
Yes, Restart: Yes, restart
|
||||
Yes, Open Link: Yes, open link
|
||||
|
@ -292,6 +292,8 @@ Settings:
|
||||
Pastel Pink: Pastelne roosa
|
||||
Hot Pink: Säravroosa
|
||||
Nordic: Põhjala
|
||||
Solarized Dark: Tume päikesekuma
|
||||
Solarized Light: Hele päikesekuma
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Põhiline värviteema'
|
||||
Red: 'Punane'
|
||||
@ -331,6 +333,14 @@ Settings:
|
||||
Catppuccin Mocha Teal: Catppuccin Mocha Rohekassinine
|
||||
Catppuccin Mocha Sky: Catppuccin Mocha Helesinine
|
||||
Catppuccin Mocha Sapphire: Catppuccin Mocha Safiir
|
||||
Solarized Orange: Oranž päikesekuma
|
||||
Solarized Red: Punane päikesekuma
|
||||
Solarized Magenta: Fuksiapunane päikesekuma
|
||||
Solarized Violet: Punakassinine päikesekuma
|
||||
Solarized Blue: Sinine päikesekuma
|
||||
Solarized Cyan: Rohekassinine päikesekuma
|
||||
Solarized Green: Roheline päikesekuma
|
||||
Solarized Yellow: Kollane päikesekuma
|
||||
Secondary Color Theme: 'Värvide alamteema'
|
||||
#* Main Color Theme
|
||||
UI Scale: Kasutajaliidese suurus
|
||||
@ -633,6 +643,8 @@ About:
|
||||
Source code: Lähtekood
|
||||
Beta: beetaversioon
|
||||
Discussions: Arutelud
|
||||
Licensed under the: Avaldatud ja litsentseeritud
|
||||
AGPLv3: AGPLv3 alusel
|
||||
Profile:
|
||||
Profile Select: 'Vali profiil'
|
||||
All Channels: 'Kõik kanalid'
|
||||
|
@ -280,6 +280,9 @@ Settings:
|
||||
Current instance will be randomized on startup: Uneko instantzia ausaz banatuko
|
||||
da abiaraztean
|
||||
Clear Default Instance: Garbitu lehenetsitako instantzia
|
||||
Auto Load Next Page:
|
||||
Tooltip: Kargatu orrialde eta iruzkin gehigarriak automatikoki.
|
||||
Label: Kargatu automatikoki hurrengo orria
|
||||
Theme Settings:
|
||||
Theme Settings: 'Gaien ezarpenak'
|
||||
Match Top Bar with Main Color: 'Lotu goiko barra kolore nagusiarekin'
|
||||
@ -297,6 +300,8 @@ Settings:
|
||||
Nordic: nordikoa
|
||||
Pastel Pink: Pastel arrosa
|
||||
Hot Pink: Arrosa beroa
|
||||
Solarized Dark: Solarizatu iluna
|
||||
Solarized Light: Solarizatu argia
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Oinarrizko koloreen gaia'
|
||||
Red: 'Gorria'
|
||||
@ -336,6 +341,14 @@ Settings:
|
||||
Catppuccin Mocha Green: Catppuccin Motxa Berdea
|
||||
Catppuccin Mocha Teal: Catppuccin Motxa Zertzeta
|
||||
Catppuccin Mocha Sky: Catppuccin Motxa Zerua
|
||||
Solarized Yellow: Hori solarizatua
|
||||
Solarized Orange: Laranja solarizatua
|
||||
Solarized Red: Gorri solarizatua
|
||||
Solarized Magenta: Magenta solarizatua
|
||||
Solarized Blue: Urdin solarizatua
|
||||
Solarized Cyan: Zian solarizatua
|
||||
Solarized Violet: Violeta solarizatua
|
||||
Solarized Green: Berde solarizatua
|
||||
Secondary Color Theme: 'Gaiaren bigarren mailako kolorea'
|
||||
#* Main Color Theme
|
||||
Hide Side Bar Labels: Ezkutatu alboko barraren etiketak
|
||||
@ -605,6 +618,7 @@ Settings:
|
||||
Remove Password: Pasahitza ezabatu
|
||||
Set Password: Ezarri pasahitza
|
||||
Expand All Settings Sections: Zabaldu ezarpen guztien atalak
|
||||
Sort Settings Sections (A-Z): Ordenatu ezarpenen atalak (A-Z)
|
||||
About:
|
||||
#On About page
|
||||
About: 'Honi buruz'
|
||||
@ -635,6 +649,8 @@ About:
|
||||
Donate: 'Donazioa egin'
|
||||
|
||||
Discussions: Eztabaidak
|
||||
Licensed under the: Lizentziapean
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
Profile Select: 'Hautatu profila'
|
||||
Profile Filter: 'Profilaren iragazkiak'
|
||||
@ -904,6 +920,15 @@ Playlist:
|
||||
#* Published
|
||||
#& Views
|
||||
Playlist: Erreprodukzio-zerrenda
|
||||
Sort By:
|
||||
Sort By: Honen arabera ordenatu
|
||||
DateAddedNewest: Azken gehitua lehenengo
|
||||
Custom: Pertsonalizatua
|
||||
DateAddedOldest: Lehenago gehitutakoak lehenengo
|
||||
VideoTitleAscending: Izenburua (A-Z)
|
||||
VideoTitleDescending: Izenburua (Z-A)
|
||||
AuthorAscending: Egilea (A-Z)
|
||||
AuthorDescending: Egilea (Z-A)
|
||||
Toggle Theatre Mode: 'Aldatu Antzerki modura'
|
||||
Change Format:
|
||||
Change Media Formats: 'Bideoen formatuak aldatu'
|
||||
@ -1141,3 +1166,13 @@ Ok: Ados
|
||||
Channel Hidden: '{channel} gehitu da kanalaren iragazkian'
|
||||
Display Label: '{label}: {value}'
|
||||
checkmark: ✓
|
||||
Search character limit: Bilaketa-kontsultak {searchCharacterLimit} karaktereen muga
|
||||
gainditzen du
|
||||
Feed:
|
||||
Feed Last Updated: '{feedName} jarioaren azken eguneraketa: {date}'
|
||||
Refresh Feed: Eguneratu {subscriptionName}
|
||||
Moments Ago: duela momentu batzuk
|
||||
Yes, Delete: Bai, ezabatu
|
||||
Cancel: Utzi
|
||||
Yes, Open Link: Bai, ireki esteka
|
||||
Yes, Restart: Bai, berrabiarazi
|
||||
|
@ -305,6 +305,8 @@ Settings:
|
||||
Pastel Pink: Rose pastel
|
||||
Hot Pink: Rose vif
|
||||
Nordic: Nordic
|
||||
Solarized Light: Clair polarisé
|
||||
Solarized Dark: Noir polarisé
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Couleur principale du thème'
|
||||
Red: 'Rouge'
|
||||
@ -344,6 +346,14 @@ Settings:
|
||||
Catppuccin Mocha Sapphire: Catppuccin moka saphir
|
||||
Catppuccin Mocha Lavender: Catppuccin moka lavande
|
||||
Catppuccin Mocha Teal: Catppuccin moka bleu sarcelle
|
||||
Solarized Magenta: Magenta polarisé
|
||||
Solarized Violet: Violet polarisé
|
||||
Solarized Blue: Bleu polarisé
|
||||
Solarized Cyan: Cyan polarisé
|
||||
Solarized Green: Vert polarisé
|
||||
Solarized Yellow: Jaune polarisé
|
||||
Solarized Orange: Orange polarisé
|
||||
Solarized Red: Rouge polarisé
|
||||
Secondary Color Theme: 'Couleur secondaire du thème'
|
||||
#* Main Color Theme
|
||||
UI Scale: Échelle de l'interface utilisateur
|
||||
@ -737,6 +747,8 @@ About:
|
||||
GitHub releases: Les différentes versions de FreeTube disponibles sur GitHub
|
||||
Downloads / Changelog: Téléchargements / Journal des modifications
|
||||
Discussions: Discussions
|
||||
AGPLv3: AGPLv3
|
||||
Licensed under the: Sous licence
|
||||
Channel:
|
||||
Subscribe: 'S''abonner'
|
||||
Unsubscribe: 'Se désabonner'
|
||||
@ -1280,8 +1292,8 @@ Feed:
|
||||
Feed Last Updated: '{feedName} dernière mise à jour du flux : {date}'
|
||||
Refresh Feed: Rafraîchir {subscriptionName}
|
||||
Moments Ago: il y a quelques instants
|
||||
Yes, Delete: Oui, Effacer
|
||||
Yes, Restart: Oui, Redémarrer
|
||||
Yes, Open Link: Oui, Ouvrir le lien
|
||||
Yes, Delete: Oui, effacer
|
||||
Yes, Restart: Oui, redémarrer
|
||||
Yes, Open Link: Oui, ouvrir le lien
|
||||
Cancel: Annuler
|
||||
Search character limit: La recherche dépasse le nombre de caractères impartis
|
||||
|
@ -283,6 +283,8 @@ Settings:
|
||||
Pastel Pink: Pastelno ružičasta
|
||||
Hot Pink: Vruća ružičasta
|
||||
Nordic: Nordic
|
||||
Solarized Dark: Solarna tamna
|
||||
Solarized Light: Solarna svijetla
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Glavna boja teme'
|
||||
Red: 'Crvena'
|
||||
@ -322,6 +324,14 @@ Settings:
|
||||
Catppuccin Mocha Blue: Catppuccin Mocha Plava
|
||||
Catppuccin Mocha Lavender: Catppuccin Mocha Lavanda
|
||||
Catppuccin Mocha Green: Catppuccin Mocha Zelena
|
||||
Solarized Blue: Solarna plava
|
||||
Solarized Green: Solarna zelena
|
||||
Solarized Yellow: Solarna žuta
|
||||
Solarized Orange: Solarna narančasta
|
||||
Solarized Red: Solarna crvena
|
||||
Solarized Magenta: Solarna magenta
|
||||
Solarized Violet: Solarna ljubičasta
|
||||
Solarized Cyan: Solarna cijan
|
||||
Secondary Color Theme: 'Sekundarna boja teme'
|
||||
#* Main Color Theme
|
||||
UI Scale: Uvećanje korisničkog sučelja
|
||||
@ -691,6 +701,8 @@ About:
|
||||
Licensed under the AGPLv3: AGPLv3 licenca
|
||||
Source code: Izvorni kod
|
||||
Discussions: Diskusije
|
||||
Licensed under the: Licencirano pod
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
All Channels: 'Svi kanali'
|
||||
Profile Manager: 'Upravljač profila'
|
||||
@ -1205,3 +1217,5 @@ Yes, Delete: Da, izbriši
|
||||
Yes, Open Link: Da, otvori poveznicu
|
||||
Cancel: Odustani
|
||||
Yes, Restart: Da, pokreni ponovo
|
||||
Search character limit: Upit za pretraživanje premašuje ograničenje od {searchCharacterLimit}
|
||||
znakova
|
||||
|
@ -183,6 +183,10 @@ User Playlists:
|
||||
Kattintson ide a visszavonáshoz
|
||||
Reverted to use {oldPlaylistName} for quick bookmark: Visszaállítva a(z) {oldPlaylistName}
|
||||
használatára a gyors könyvjelzőhöz
|
||||
Playlist {playlistName} is the new quick bookmark playlist.: A(z) {playlistName}
|
||||
lejátszási lista az új gyors könyvjelző lejátszási lista.
|
||||
This playlist is already being used for quick bookmark.: Ez a lejátszási lista
|
||||
már használatban van mint gyors könyvjelző.
|
||||
Search for Videos: Videók keresése
|
||||
Are you sure you want to delete this playlist? This cannot be undone: Biztos, hogy
|
||||
törölni szeretné ezt a lejátszási listát? Ezt nem lehet visszacsinálni.
|
||||
@ -230,6 +234,9 @@ User Playlists:
|
||||
Enable Quick Bookmark With This Playlist: Gyors Könyvjelző Engedélyezése Ezzel A
|
||||
Lejátszási Listával
|
||||
Playlists with Matching Videos: Lejátszási listák a kapcsolódó videókkal
|
||||
Cannot delete the quick bookmark target playlist.: Nem lehet törölni a gyors könyvjelző
|
||||
cél lejátszási listát.
|
||||
Quick Bookmark Enabled: Gyors könyvjelző engedélyezve
|
||||
History:
|
||||
# On History Page
|
||||
History: 'Előzmények'
|
||||
@ -302,6 +309,8 @@ Settings:
|
||||
Pastel Pink: Pasztell rózsaszín
|
||||
Hot Pink: Forró rózsaszín
|
||||
Nordic: Skandináv
|
||||
Solarized Light: Szolarizált világos
|
||||
Solarized Dark: Szolarizált sötét
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Fő színtéma'
|
||||
Red: 'Vörös'
|
||||
@ -341,6 +350,14 @@ Settings:
|
||||
Catppuccin Mocha Rosewater: Catppuccin Mocha Rózsavíz
|
||||
Catppuccin Mocha Peach: Catppuccin Mocha Barackvirágszínű
|
||||
Catppuccin Mocha Yellow: Catppuccin Mocha Sárga
|
||||
Solarized Yellow: Szolarizált sárga
|
||||
Solarized Orange: Szolarizált narancssárga
|
||||
Solarized Red: Szolarizált vörös
|
||||
Solarized Blue: Szolarizált kék
|
||||
Solarized Cyan: Szolarizált ciánkék
|
||||
Solarized Green: Szolarizált zöld
|
||||
Solarized Magenta: Szolarizált magenta
|
||||
Solarized Violet: Szolarizált ibolya
|
||||
Secondary Color Theme: 'Másodlagos színtéma'
|
||||
#* Main Color Theme
|
||||
UI Scale: Felhasználói felület méretezése
|
||||
@ -709,6 +726,8 @@ About:
|
||||
FAQ: GyIK
|
||||
Report a problem: Probléma jelentése
|
||||
Discussions: Megbeszélések
|
||||
AGPLv3: licenc alapján
|
||||
Licensed under the: Az AGPLv3
|
||||
Profile:
|
||||
Profile Select: 'Profil kiválasztása'
|
||||
All Channels: 'Összes csatorna'
|
||||
|
@ -293,6 +293,8 @@ Settings:
|
||||
Pastel Pink: Rosa pastello
|
||||
Hot Pink: Rosa caldo
|
||||
Nordic: Nordico
|
||||
Solarized Dark: Solarizzato scuro
|
||||
Solarized Light: Solarizzato chiaro
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Colore principale del tema'
|
||||
Red: 'Rosso'
|
||||
@ -332,6 +334,14 @@ Settings:
|
||||
Catppuccin Mocha Peach: Cappuccino moka pesca
|
||||
Catppuccin Mocha Teal: Cappuccino moka alzavola
|
||||
Catppuccin Mocha Sky: Cappuccino moka cielo
|
||||
Solarized Yellow: Solarizzato giallo
|
||||
Solarized Orange: Solarizzato arancione
|
||||
Solarized Red: Solarizzato rosso
|
||||
Solarized Magenta: Solarizzato magenta
|
||||
Solarized Violet: Solarizzato viola
|
||||
Solarized Cyan: Solarizzato ciano
|
||||
Solarized Green: Solarizzato verde
|
||||
Solarized Blue: Solarizzato blu
|
||||
Secondary Color Theme: 'Colore secondario del tema'
|
||||
#* Main Color Theme
|
||||
UI Scale: Dimensioni dell'interfaccia utente
|
||||
@ -705,6 +715,8 @@ About:
|
||||
Source code: Codice sorgente
|
||||
Beta: Beta
|
||||
Discussions: Discussioni
|
||||
AGPLv3: AGPLv3
|
||||
Licensed under the: Concesso con licenza
|
||||
Channel:
|
||||
Subscribe: 'Iscriviti'
|
||||
Unsubscribe: 'Disiscriviti'
|
||||
|
@ -41,6 +41,8 @@ Global:
|
||||
View Count: 1 回視聴 | {count} 回視聴
|
||||
Watching Count: 1 人が視聴中 | {count} 人が視聴中
|
||||
Channel Count: 1 チャンネル | {count} チャンネル
|
||||
Input Tags:
|
||||
Length Requirement: タグは最低でも {number} 文字以上である必要があります
|
||||
Search / Go to URL: '検索 / URL の表示'
|
||||
# In Filter Button
|
||||
Search Filters:
|
||||
@ -109,14 +111,64 @@ Playlists: '再生リスト'
|
||||
User Playlists:
|
||||
Your Playlists: 'あなたの再生リスト'
|
||||
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックします
|
||||
Playlist Message:
|
||||
Playlist Message:
|
||||
このページは、完全に動作する動画リストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」の動画リストに移動します。
|
||||
Search bar placeholder: 動画リスト内の検索
|
||||
Search bar placeholder: 再生リストの検索
|
||||
Empty Search Message: この再生リストに、検索に一致する動画はありません
|
||||
This playlist currently has no videos.: 存在、この再生リストには動画があっていません。
|
||||
Create New Playlist: 新規再生リストを作られる
|
||||
This playlist currently has no videos.: 現在、この再生リストには動画がありません。
|
||||
Create New Playlist: 新しい再生リストの作成
|
||||
Sort By:
|
||||
NameAscending: A-Z
|
||||
EarliestCreatedFirst: 初期に作成
|
||||
LatestUpdatedFirst: 最近の更新
|
||||
EarliestUpdatedFirst: 初期に更新
|
||||
EarliestPlayedFirst: 初期に再生
|
||||
LatestPlayedFirst: 最近の再生
|
||||
Sort By: 並び替え順
|
||||
LatestCreatedFirst: 最近に作成
|
||||
NameDescending: Z-A
|
||||
Remove from Favorites: '{playlistName} から削除'
|
||||
Move Video Down: 動画を下へ移動
|
||||
Playlist Name: 再生リストの名前
|
||||
Remove from Playlist: 再生リストから削除
|
||||
Playlist Description: 再生リストの説明
|
||||
Copy Playlist: 再生リストのコピー
|
||||
Edit Playlist Info: 再生リスト情報の編集
|
||||
Remove Watched Videos: 再生済み動画の削除
|
||||
Enable Quick Bookmark With This Playlist: 再生リストでクイック ブックマークを有効にする
|
||||
SinglePlaylistView:
|
||||
Toast:
|
||||
This playlist is protected and cannot be removed.: この再生リストは保護されており、削除できません。
|
||||
This video cannot be moved down.: この動画は下に移動できません.
|
||||
This video cannot be moved up.: この動画は上に移動できません.
|
||||
Some videos in the playlist are not loaded yet. Click here to copy anyway.: 再生リスト内のすべての動画が読み込まれていません。とにかくコピーするにはここをクリック。
|
||||
There was an issue with updating this playlist.: この再生リストの更新に問題が発生しました。
|
||||
Quick bookmark disabled: クイックブックマークは無効です
|
||||
This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: この再生リストは、{oldPlaylistName}
|
||||
の代わりにクイックブックマークとして使用されるようになりました。元に戻すにはここをクリック
|
||||
Video has been removed: 動画は削除されました
|
||||
There was a problem with removing this video: この動画の削除に問題が発生しました
|
||||
This playlist is now used for quick bookmark: この再生リストは、今からクイックブックマークとして使用されます
|
||||
Playlist has been updated.: 再生リストを更新しました。
|
||||
Playlist name cannot be empty. Please input a name.: 再生リストの名前は空白にできません。名前を入力してください.
|
||||
Reverted to use {oldPlaylistName} for quick bookmark: クイックブックマーク用に {oldPlaylistName}
|
||||
を元に戻しました
|
||||
"{videoCount} video(s) have been removed": 1 つの動画を削除しました | {video Count} 動画を削除しました
|
||||
Playlist {playlistName} has been deleted.: 再生リスト {playlistName} が削除されました。
|
||||
There were no videos to remove.: 削除する動画はありません。
|
||||
This playlist does not exist: この再生リストは存在しません
|
||||
Search for Videos: 動画検索
|
||||
Save Changes: 変更の保存
|
||||
Move Video Up: 動画を上へ移動
|
||||
Add to Favorites: '{playlistName} に追加'
|
||||
Playlists with Matching Videos: 動画付き再生リスト
|
||||
Add to Playlist: 再生リストに追加
|
||||
Delete Playlist: 再生リストの削除
|
||||
Cancel: キャンセル
|
||||
Disable Quick Bookmark: クイック ブックマークを無効にする
|
||||
Are you sure you want to delete this playlist? This cannot be undone: 再生リストを削除してもいいですか?復元は不可能です。
|
||||
Are you sure you want to remove all watched videos from this playlist? This cannot be undone: 再生リストから再生済みの動画を削除してもいいですか?復元は不可能です。
|
||||
You have no playlists. Click on the create new playlist button to create a new one.: 再生リストがありません。新しい再生リストを作成するには、「新しい再生リストの作成」ボタンをクリックしてください。
|
||||
History:
|
||||
# On History Page
|
||||
History: '履歴'
|
||||
@ -465,7 +517,7 @@ Settings:
|
||||
Experimental Settings:
|
||||
Replace HTTP Cache: HTTP キャッシュの置換
|
||||
Experimental Settings: 実験中の設定
|
||||
Warning:
|
||||
Warning:
|
||||
これらの設定は実験的なものであり、有効にするとアプリのクラッシュを引き起こす恐れがあります。バックアップをとっておくことを強くお勧めします。自己責任で使用してください!
|
||||
Password Settings:
|
||||
Password Settings: パスワード設定
|
||||
@ -850,7 +902,7 @@ The playlist has been reversed: 再生リストを逆順にしました
|
||||
A new blog is now available, {blogTitle}. Click to view more: '新着ブログ公開、{blogTitle}。クリックしてブログを読む'
|
||||
Download From Site: サイトからダウンロード
|
||||
Version {versionNumber} is now available! Click for more details: 最新バージョン {versionNumber}
|
||||
配信中!詳細はクリックして確認してください
|
||||
配信中! 詳細はクリックして確認してください
|
||||
This video is unavailable because of missing formats. This can happen due to country unavailability.: この動画は、動画形式の情報が利用できないため再生できません。再生が許可されていない国で発生します。
|
||||
Tooltips:
|
||||
Subscription Settings:
|
||||
@ -937,7 +989,11 @@ Ok: OK
|
||||
Hashtag:
|
||||
Hashtag: ハッシュタグ
|
||||
This hashtag does not currently have any videos: このハッシュタグには現在動画がありません
|
||||
Playlist will pause when current video is finished: 現在のビデオが終了すると、プレイリストは停止します
|
||||
Playlist will not pause when current video is finished: 現在のビデオが終了しても、プレイリストは停止しません
|
||||
Playlist will pause when current video is finished: 現在のビデオが終了すると、再生リストは一旦停止します
|
||||
Playlist will not pause when current video is finished: 現在のビデオが終了しても、再生リストは一旦停止しません
|
||||
Close Banner: バナーを閉じる
|
||||
Go to page: '{page}に行く'
|
||||
Go to page: '{page} を表示'
|
||||
Search character limit: 検索クエリは {searchCharacterLimit} 文字制限を超えています
|
||||
Feed:
|
||||
Feed Last Updated: '{feedName} フィードの最終更新日時: {date}'
|
||||
Refresh Feed: '{subscriptionName} の更新'
|
||||
|
@ -291,6 +291,8 @@ Settings:
|
||||
Pastel Pink: Pastelroze
|
||||
Hot Pink: Heet-roze
|
||||
Nordic: Noords
|
||||
Solarized Dark: Gesolariseerd donker
|
||||
Solarized Light: Gesolariseerd licht
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Primaire themakleur'
|
||||
Red: 'Rood'
|
||||
@ -330,6 +332,14 @@ Settings:
|
||||
Catppuccin Mocha Sapphire: Catppuccin Mokka Saffier
|
||||
Catppuccin Mocha Teal: Catppuccin Mokka Wintertaling
|
||||
Catppuccin Mocha Sky: Catppuccin Mokka Hemel
|
||||
Solarized Yellow: Gesolariseerd geel
|
||||
Solarized Orange: Gesolariseerd oranje
|
||||
Solarized Red: Gesolariseerd rood
|
||||
Solarized Magenta: Gesolariseerd magenta
|
||||
Solarized Violet: Gesolariseerd violet
|
||||
Solarized Blue: Gesolariseerd blauw
|
||||
Solarized Cyan: Gesolariseerd cyaan
|
||||
Solarized Green: Gesolariseerd groen
|
||||
Secondary Color Theme: 'Secundaire themakleur'
|
||||
#* Main Color Theme
|
||||
UI Scale: Interfaceschaal
|
||||
@ -695,6 +705,8 @@ About:
|
||||
Source code: Broncode
|
||||
Beta: Bèta
|
||||
Discussions: Discussies
|
||||
AGPLv3: AGPLv3
|
||||
Licensed under the: Gelicentieerd onder de
|
||||
Channel:
|
||||
Subscriber: 'Abonnee'
|
||||
Subscribers: 'Abonnees'
|
||||
|
@ -290,6 +290,8 @@ Settings:
|
||||
Hot Pink: Gorący róż
|
||||
Pastel Pink: Pastelowy róż
|
||||
Nordic: Nordycki
|
||||
Solarized Light: Nasłoneczniony jasny
|
||||
Solarized Dark: Nasłoneczniony ciemny
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Główny kolor motywu'
|
||||
Red: 'Czerwony'
|
||||
@ -329,6 +331,14 @@ Settings:
|
||||
Catppuccin Mocha Peach: Catppuccin Mocha Brzoskwiniowy
|
||||
Catppuccin Mocha Sky: Catppuccin Mocha Kolor Nieba
|
||||
Catppuccin Mocha Maroon: Catppuccin Mocha Kasztanowy
|
||||
Solarized Orange: Nasłoneczniony pomarańczowy
|
||||
Solarized Red: Nasłoneczniony czerwony
|
||||
Solarized Magenta: Nasłoneczniony magenta
|
||||
Solarized Violet: Nasłoneczniony fioletowy
|
||||
Solarized Blue: Nasłoneczniony niebieski
|
||||
Solarized Cyan: Nasłoneczniony cyjan
|
||||
Solarized Green: Nasłoneczniony zielony
|
||||
Solarized Yellow: Nasłoneczniony żółty
|
||||
Secondary Color Theme: 'Drugi kolor motywu'
|
||||
#* Main Color Theme
|
||||
UI Scale: Skala UI
|
||||
@ -710,6 +720,8 @@ About:
|
||||
Source code: Kod źródłowy
|
||||
FreeTube is made possible by: FreeTube powstał dzięki
|
||||
Discussions: Dyskusje
|
||||
Licensed under the: Licencjonowany na
|
||||
AGPLv3: AGPLv3
|
||||
Channel:
|
||||
Subscriber: 'Subskrybent/ka'
|
||||
Subscribers: 'subskrybentów'
|
||||
|
@ -287,6 +287,8 @@ Settings:
|
||||
Pastel Pink: Rosa Pastel
|
||||
Hot Pink: Rosa Choque
|
||||
Nordic: Nordico
|
||||
Solarized Light: Claro Solarizado
|
||||
Solarized Dark: Escuro Solarizado
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Cor principal'
|
||||
Red: 'Vermelha'
|
||||
@ -326,6 +328,14 @@ Settings:
|
||||
Catppuccin Mocha Sky: Catppuccin Mocha Céu
|
||||
Catppuccin Mocha Teal: Catppuccin Mocha Verde-azulado
|
||||
Catppuccin Mocha Lavender: Catppuccin Mocha Lavanda
|
||||
Solarized Yellow: Amarelo Solarizado
|
||||
Solarized Red: Vermelho Solarizado
|
||||
Solarized Magenta: Magenta Solarizado
|
||||
Solarized Violet: Violeta Solarizada
|
||||
Solarized Blue: Azul Solarizado
|
||||
Solarized Cyan: Ciano Solarizado
|
||||
Solarized Green: Verde Solarizado
|
||||
Solarized Orange: Laranja Solarizada
|
||||
Secondary Color Theme: 'Cor secundária'
|
||||
#* Main Color Theme
|
||||
UI Scale: Escala da Interface de Usuário
|
||||
@ -699,6 +709,8 @@ About:
|
||||
Please check for duplicates before posting: Verifique se há duplicações antes de
|
||||
postar
|
||||
Discussions: Discussões
|
||||
Licensed under the: Licenciado sob o
|
||||
AGPLv3: AGPLv3
|
||||
Channel:
|
||||
Subscriber: 'Inscrito'
|
||||
Subscribers: 'Inscritos'
|
||||
|
@ -293,6 +293,8 @@ Settings:
|
||||
Pastel Pink: Rosa pastel
|
||||
Hot Pink: Rosa choque
|
||||
Nordic: Nórdico
|
||||
Solarized Dark: Escuro solar
|
||||
Solarized Light: Claro solar
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Cor principal'
|
||||
Red: 'Vermelho'
|
||||
@ -332,6 +334,14 @@ Settings:
|
||||
Catppuccin Mocha Sapphire: Cappuccino mocha safira
|
||||
Catppuccin Mocha Blue: Cappuccino mocha azul
|
||||
Catppuccin Mocha Lavender: Cappuccino mocha lavanda
|
||||
Solarized Yellow: Amarelo solar
|
||||
Solarized Orange: Laranja solar
|
||||
Solarized Red: Vermelho solar
|
||||
Solarized Magenta: Magenta solar
|
||||
Solarized Violet: Violeta solar
|
||||
Solarized Blue: Azul solar
|
||||
Solarized Cyan: Ciano solar
|
||||
Solarized Green: Verde solar
|
||||
Secondary Color Theme: 'Cor secundária'
|
||||
#* Main Color Theme
|
||||
UI Scale: Escala da interface gráfica
|
||||
@ -693,6 +703,8 @@ About:
|
||||
Source code: Código-fonte
|
||||
Beta: Beta
|
||||
Discussions: Discussões
|
||||
Licensed under the: Licenciado nos termos da
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
Profile Select: 'Seleção de perfil'
|
||||
All Channels: 'Todos os canais'
|
||||
|
@ -133,7 +133,7 @@ User Playlists:
|
||||
Search bar placeholder: Căutați liste de redare
|
||||
Empty Search Message: Nu există videoclipuri în această listă de redare care să
|
||||
corespundă căutării dvs.
|
||||
Move Video Down: Mutați video în jos
|
||||
Move Video Down: Mutați videoclipul în jos
|
||||
Enable Quick Bookmark With This Playlist: Activați marcajul rapid cu această listă
|
||||
de redare
|
||||
Sort By:
|
||||
@ -143,6 +143,9 @@ User Playlists:
|
||||
NameAscending: A-Z
|
||||
LatestUpdatedFirst: Actualizat recent
|
||||
EarliestCreatedFirst: Cel mai devreme creat
|
||||
LatestPlayedFirst: Redate recent
|
||||
EarliestUpdatedFirst: Cea mai recentă actualizare
|
||||
EarliestPlayedFirst: Cele mai recent redate
|
||||
This playlist currently has no videos.: Această listă de redare nu are în prezent
|
||||
niciun videoclip.
|
||||
You have no playlists. Click on the create new playlist button to create a new one.: Nu
|
||||
@ -164,7 +167,7 @@ User Playlists:
|
||||
Add to Playlist: Adăugați la lista de redare
|
||||
Add to Favorites: Adaugă la {playlistName}
|
||||
Remove from Favorites: Eliminați din {playlistName}
|
||||
Move Video Up: Mutați video în sus
|
||||
Move Video Up: Mutați videoclipul în sus
|
||||
Remove from Playlist: Eliminați din lista de redare
|
||||
Playlist Name: Numele listei de redare
|
||||
Playlist Description: Descrierea listei de redare
|
||||
@ -183,6 +186,20 @@ User Playlists:
|
||||
deja o listă de redare cu acest nume. Vă rugăm să alegeți un alt nume.
|
||||
New Playlist Name: Numele noii liste de redare
|
||||
Create: Creați
|
||||
SinglePlaylistView:
|
||||
Toast:
|
||||
There was a problem with removing this video: A existat o problemă cu eliminarea
|
||||
acestui videoclip
|
||||
This playlist is now used for quick bookmark: Această listă de redare este acum
|
||||
utilizată pentru marcaje rapide
|
||||
This playlist is now used for quick bookmark instead of {oldPlaylistName}. Click here to undo: Această
|
||||
listă de redare este acum utilizată pentru marcajul rapid în loc de {oldPlaylistName}.
|
||||
Faceți clic aici pentru a anula
|
||||
This video cannot be moved down.: Acest videoclip nu poate fi mutat în jos.
|
||||
This video cannot be moved up.: Acest videoclip nu poate fi mutat în sus.
|
||||
Video has been removed: Videoclipul a fost eliminat
|
||||
Quick bookmark disabled: Marcaj rapid dezactivat
|
||||
Search for Videos: Căutați videoclipuri
|
||||
History:
|
||||
# On History Page
|
||||
History: 'Istoric'
|
||||
|
@ -302,6 +302,8 @@ Settings:
|
||||
Catppuccin Mocha: Catppuccin Mocha
|
||||
System Default: Системски подразумевано
|
||||
Nordic: Нордичка
|
||||
Solarized Dark: Соларизована тамна
|
||||
Solarized Light: Соларизована светла
|
||||
Main Color Theme:
|
||||
Main Color Theme: 'Главна тема боја'
|
||||
Red: 'Црвена'
|
||||
@ -341,6 +343,14 @@ Settings:
|
||||
Catppuccin Mocha Lavender: Catppuccin Mocha лаванда
|
||||
Catppuccin Mocha Blue: Catppuccin Mocha плава
|
||||
Catppuccin Mocha Green: Catppuccin Mocha зелена
|
||||
Solarized Yellow: Соларизована жута
|
||||
Solarized Orange: Соларизована наранџаста
|
||||
Solarized Red: Соларизована црвена
|
||||
Solarized Cyan: Соларизована цијан
|
||||
Solarized Green: Соларизована зелена
|
||||
Solarized Magenta: Соларизована магента
|
||||
Solarized Blue: Соларизована плава
|
||||
Solarized Violet: Соларизована љубичаста
|
||||
Secondary Color Theme: 'Секундарна тема боје'
|
||||
#* Main Color Theme
|
||||
Hide FreeTube Header Logo: Сакриј FreeTube логотип у заглављу
|
||||
@ -638,6 +648,8 @@ About:
|
||||
Donate: 'Донација'
|
||||
|
||||
Discussions: Дискусије
|
||||
Licensed under the: Лиценцирано под
|
||||
AGPLv3: AGPLv3
|
||||
Profile:
|
||||
Profile Select: 'Избор профила'
|
||||
Profile Filter: 'Филтер профила'
|
||||
|
@ -255,6 +255,8 @@ Settings:
|
||||
Pastel Pink: Pastel Pink
|
||||
Hot Pink: Hot Pink
|
||||
Nordic: Nordic
|
||||
Solarized Light: 日照白
|
||||
Solarized Dark: 日照黑
|
||||
Main Color Theme:
|
||||
Main Color Theme: '主题色'
|
||||
Red: '红'
|
||||
@ -294,6 +296,14 @@ Settings:
|
||||
Catppuccin Mocha Red: Catppuccin Mocha Red
|
||||
Catppuccin Mocha Blue: Catppuccin Mocha Blue
|
||||
Catppuccin Mocha Lavender: Catppuccin Mocha Lavender
|
||||
Solarized Orange: 日照橙
|
||||
Solarized Magenta: 日照品红
|
||||
Solarized Cyan: 日照青
|
||||
Solarized Green: 日照绿
|
||||
Solarized Yellow: 日照黄
|
||||
Solarized Red: 日照红
|
||||
Solarized Blue: 日照蓝
|
||||
Solarized Violet: 日照紫
|
||||
Secondary Color Theme: '次主题色'
|
||||
#* Main Color Theme
|
||||
UI Scale: UI缩放
|
||||
@ -616,6 +626,8 @@ About:
|
||||
these people and projects: 这些人和项目
|
||||
FreeTube is made possible by: FreeTube 的存在依赖
|
||||
Discussions: 讨论
|
||||
Licensed under the: 许可依据
|
||||
AGPLv3: AGPLv3
|
||||
Channel:
|
||||
Subscriber: '订阅者'
|
||||
Subscribers: '订阅者'
|
||||
|
@ -256,6 +256,8 @@ Settings:
|
||||
Pastel Pink: 淡粉紅色
|
||||
Hot Pink: 亮粉紅色
|
||||
Nordic: 北歐
|
||||
Solarized Dark: Solarized Dark
|
||||
Solarized Light: Solarized Light
|
||||
Main Color Theme:
|
||||
Main Color Theme: '主題色'
|
||||
Red: '紅'
|
||||
@ -295,6 +297,14 @@ Settings:
|
||||
Catppuccin Mocha Sky: 卡布奇諾摩卡天藍色
|
||||
Catppuccin Mocha Peach: 卡布奇諾摩卡桃紅色
|
||||
Catppuccin Mocha Sapphire: 卡布奇諾摩卡藍寶石色
|
||||
Solarized Yellow: Solarized 黃色
|
||||
Solarized Orange: Solarized 橘色
|
||||
Solarized Red: Solarized 紅色
|
||||
Solarized Magenta: Solarized 洋紅色
|
||||
Solarized Violet: Solarized 紫色
|
||||
Solarized Blue: Solarized 藍色
|
||||
Solarized Cyan: Solarized 青色
|
||||
Solarized Green: Solarized 綠色
|
||||
Secondary Color Theme: '次要主題色'
|
||||
#* Main Color Theme
|
||||
UI Scale: UI縮放
|
||||
@ -626,6 +636,8 @@ About:
|
||||
Licensed under the AGPLv3: 以 AGPLv3 授權
|
||||
Source code: 原始碼
|
||||
Discussions: 討論
|
||||
Licensed under the: 授權以
|
||||
AGPLv3: AGPLv3
|
||||
Channel:
|
||||
Subscriber: '訂閱者'
|
||||
Subscribers: '訂閱者'
|
||||
|
671
yarn.lock
671
yarn.lock
@ -375,12 +375,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
|
||||
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.22.20":
|
||||
version "7.22.20"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
|
||||
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.24.5":
|
||||
"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5":
|
||||
version "7.24.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
|
||||
integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
|
||||
@ -1277,6 +1272,21 @@
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@eslint/eslintrc@^3.0.2":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.0.2.tgz#36180f8e85bf34d2fe3ccc2261e8e204a411ab4e"
|
||||
integrity sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==
|
||||
dependencies:
|
||||
ajv "^6.12.4"
|
||||
debug "^4.3.2"
|
||||
espree "^10.0.1"
|
||||
globals "^14.0.0"
|
||||
ignore "^5.2.0"
|
||||
import-fresh "^3.2.1"
|
||||
js-yaml "^4.1.0"
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@eslint/js@8.57.0":
|
||||
version "8.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
|
||||
@ -1306,6 +1316,13 @@
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-common-types" "6.5.2"
|
||||
|
||||
"@fortawesome/free-regular-svg-icons@^6.5.2":
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz#e8e04b4368d49920abdf1bacc63c67c870635222"
|
||||
integrity sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-common-types" "6.5.2"
|
||||
|
||||
"@fortawesome/free-solid-svg-icons@^6.5.2":
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz#9b40b077b27400a5e9fcbf2d15b986c7be69e9ca"
|
||||
@ -1482,15 +1499,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.21", "@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.22"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c"
|
||||
integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.1.0"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
||||
"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.25"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
|
||||
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
|
||||
@ -2144,7 +2153,7 @@ acorn-jsx@^5.3.2:
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.9.0:
|
||||
acorn@^8.11.3, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.9.0:
|
||||
version "8.11.3"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
|
||||
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
|
||||
@ -2888,7 +2897,7 @@ color-name@~1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
colord@^2.9.1, colord@^2.9.3:
|
||||
colord@^2.9.3:
|
||||
version "2.9.3"
|
||||
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
|
||||
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
|
||||
@ -3029,10 +3038,10 @@ copy-webpack-plugin@^12.0.2:
|
||||
schema-utils "^4.2.0"
|
||||
serialize-javascript "^6.0.2"
|
||||
|
||||
core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.36.1:
|
||||
version "3.36.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8"
|
||||
integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==
|
||||
core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.37.0:
|
||||
version "3.37.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73"
|
||||
integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==
|
||||
dependencies:
|
||||
browserslist "^4.23.0"
|
||||
|
||||
@ -3083,10 +3092,10 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
||||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
css-declaration-sorter@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz#9796bcc257b4647c39993bda8d431ce32b666f80"
|
||||
integrity sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==
|
||||
css-declaration-sorter@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024"
|
||||
integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==
|
||||
|
||||
css-functions-list@^3.2.2:
|
||||
version "3.2.2"
|
||||
@ -3107,15 +3116,15 @@ css-loader@^7.1.1:
|
||||
postcss-value-parser "^4.2.0"
|
||||
semver "^7.5.4"
|
||||
|
||||
css-minimizer-webpack-plugin@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-6.0.0.tgz#eb79947af785467739375faf7fcb8c2dbf4f06dc"
|
||||
integrity sha512-BLpR9CCDkKvhO3i0oZQgad6v9pCxUuhSc5RT6iUEy9M8hBXi4TJb5vqF2GQ2deqYHmRi3O6IR9hgAZQWg0EBwA==
|
||||
css-minimizer-webpack-plugin@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.0.tgz#b77a3d2f7c0fd02d3ac250dcc2f79065363f3cd3"
|
||||
integrity sha512-niy66jxsQHqO+EYbhPuIhqRQ1mNcNVUHrMnkzzir9kFOERJUaQDDRhh7dKDz33kBpkWMF9M8Vx0QlDbc5AHOsw==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "^0.3.21"
|
||||
cssnano "^6.0.3"
|
||||
"@jridgewell/trace-mapping" "^0.3.25"
|
||||
cssnano "^7.0.1"
|
||||
jest-worker "^29.7.0"
|
||||
postcss "^8.4.33"
|
||||
postcss "^8.4.38"
|
||||
schema-utils "^4.2.0"
|
||||
serialize-javascript "^6.0.2"
|
||||
|
||||
@ -3167,53 +3176,54 @@ cssesc@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||
|
||||
cssnano-preset-default@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.3.tgz#b4ce755974f4dc8d3d09ac13bb6281cce3ced45e"
|
||||
integrity sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA==
|
||||
cssnano-preset-default@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.1.tgz#b05c93a29868dd7bd810fa8bbf89f482804da922"
|
||||
integrity sha512-Fumyr+uZMcjYQeuHssAZxn0cKj3cdQc5GcxkBcmEzISGB+UW9CLNlU4tBOJbJGcPukFDlicG32eFbrc8K9V5pw==
|
||||
dependencies:
|
||||
css-declaration-sorter "^7.1.1"
|
||||
cssnano-utils "^4.0.1"
|
||||
postcss-calc "^9.0.1"
|
||||
postcss-colormin "^6.0.2"
|
||||
postcss-convert-values "^6.0.2"
|
||||
postcss-discard-comments "^6.0.1"
|
||||
postcss-discard-duplicates "^6.0.1"
|
||||
postcss-discard-empty "^6.0.1"
|
||||
postcss-discard-overridden "^6.0.1"
|
||||
postcss-merge-longhand "^6.0.2"
|
||||
postcss-merge-rules "^6.0.3"
|
||||
postcss-minify-font-values "^6.0.1"
|
||||
postcss-minify-gradients "^6.0.1"
|
||||
postcss-minify-params "^6.0.2"
|
||||
postcss-minify-selectors "^6.0.2"
|
||||
postcss-normalize-charset "^6.0.1"
|
||||
postcss-normalize-display-values "^6.0.1"
|
||||
postcss-normalize-positions "^6.0.1"
|
||||
postcss-normalize-repeat-style "^6.0.1"
|
||||
postcss-normalize-string "^6.0.1"
|
||||
postcss-normalize-timing-functions "^6.0.1"
|
||||
postcss-normalize-unicode "^6.0.2"
|
||||
postcss-normalize-url "^6.0.1"
|
||||
postcss-normalize-whitespace "^6.0.1"
|
||||
postcss-ordered-values "^6.0.1"
|
||||
postcss-reduce-initial "^6.0.2"
|
||||
postcss-reduce-transforms "^6.0.1"
|
||||
postcss-svgo "^6.0.2"
|
||||
postcss-unique-selectors "^6.0.2"
|
||||
browserslist "^4.23.0"
|
||||
css-declaration-sorter "^7.2.0"
|
||||
cssnano-utils "^5.0.0"
|
||||
postcss-calc "^10.0.0"
|
||||
postcss-colormin "^7.0.0"
|
||||
postcss-convert-values "^7.0.0"
|
||||
postcss-discard-comments "^7.0.0"
|
||||
postcss-discard-duplicates "^7.0.0"
|
||||
postcss-discard-empty "^7.0.0"
|
||||
postcss-discard-overridden "^7.0.0"
|
||||
postcss-merge-longhand "^7.0.0"
|
||||
postcss-merge-rules "^7.0.0"
|
||||
postcss-minify-font-values "^7.0.0"
|
||||
postcss-minify-gradients "^7.0.0"
|
||||
postcss-minify-params "^7.0.0"
|
||||
postcss-minify-selectors "^7.0.0"
|
||||
postcss-normalize-charset "^7.0.0"
|
||||
postcss-normalize-display-values "^7.0.0"
|
||||
postcss-normalize-positions "^7.0.0"
|
||||
postcss-normalize-repeat-style "^7.0.0"
|
||||
postcss-normalize-string "^7.0.0"
|
||||
postcss-normalize-timing-functions "^7.0.0"
|
||||
postcss-normalize-unicode "^7.0.0"
|
||||
postcss-normalize-url "^7.0.0"
|
||||
postcss-normalize-whitespace "^7.0.0"
|
||||
postcss-ordered-values "^7.0.0"
|
||||
postcss-reduce-initial "^7.0.0"
|
||||
postcss-reduce-transforms "^7.0.0"
|
||||
postcss-svgo "^7.0.0"
|
||||
postcss-unique-selectors "^7.0.0"
|
||||
|
||||
cssnano-utils@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.1.tgz#fd18b42f95938bf55ab47967705355d6047bf1da"
|
||||
integrity sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==
|
||||
cssnano-utils@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-5.0.0.tgz#b53a0343dd5d21012911882db6ae7d2eae0e3687"
|
||||
integrity sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==
|
||||
|
||||
cssnano@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.3.tgz#46db972da71aa159437287fb4c6bc9c5d3cc5d93"
|
||||
integrity sha512-MRq4CIj8pnyZpcI2qs6wswoYoDD1t0aL28n+41c1Ukcpm56m1h6mCexIHBGjfZfnTqtGSSCP4/fB1ovxgjBOiw==
|
||||
cssnano@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.0.1.tgz#a62675fc17f9a26d8560d3e61d79228b628dbb63"
|
||||
integrity sha512-917Mej/4SdI7b55atsli3sU4MOJ9XDoKgnlCtQtXYj8XUFcM3riTuYHyqBBnnskawW+zWwp0KxJzpEUodlpqUg==
|
||||
dependencies:
|
||||
cssnano-preset-default "^6.0.3"
|
||||
lilconfig "^3.0.0"
|
||||
cssnano-preset-default "^7.0.1"
|
||||
lilconfig "^3.1.1"
|
||||
|
||||
csso@^5.0.5:
|
||||
version "5.0.5"
|
||||
@ -3607,10 +3617,10 @@ electron-to-chromium@^1.4.668:
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46"
|
||||
integrity sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==
|
||||
|
||||
electron@^30.0.2:
|
||||
version "30.0.2"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.2.tgz#95ba019216bf8be9f3097580123e33ea37497733"
|
||||
integrity sha512-zv7T+GG89J/hyWVkQsLH4Y/rVEfqJG5M/wOBIGNaDdqd8UV9/YZPdS7CuFeaIj0H9LhCt95xkIQNpYB/3svOkQ==
|
||||
electron@^30.0.3:
|
||||
version "30.0.3"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.3.tgz#7c25ddb12ba89fd117991d010f1b274b1bafcb73"
|
||||
integrity sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==
|
||||
dependencies:
|
||||
"@electron/get" "^2.0.0"
|
||||
"@types/node" "^20.9.0"
|
||||
@ -3940,10 +3950,10 @@ eslint-plugin-jsonc@^2.15.1:
|
||||
natural-compare "^1.4.0"
|
||||
synckit "^0.6.0"
|
||||
|
||||
eslint-plugin-n@^17.4.0:
|
||||
version "17.4.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.4.0.tgz#a090462d523c4aa959ea7aa0851f1e70f12fac51"
|
||||
integrity sha512-RtgGgNpYxECwE9dFr+D66RtbN0B8r/fY6ZF8EVsmK2YnZxE8/n9LNQhgnkL9z37UFZjYVmvMuC32qu7fQBsLVQ==
|
||||
eslint-plugin-n@^17.7.0:
|
||||
version "17.7.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz#90b4f777cefb9bf0d91dafa94347961c4e8a072c"
|
||||
integrity sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
enhanced-resolve "^5.15.0"
|
||||
@ -3967,17 +3977,17 @@ eslint-plugin-promise@^6.1.1:
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816"
|
||||
integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==
|
||||
|
||||
eslint-plugin-unicorn@^52.0.0:
|
||||
version "52.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-52.0.0.tgz#c7a559edd52e3932cf2b3a05c3b0efc604c1eeb8"
|
||||
integrity sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==
|
||||
eslint-plugin-unicorn@^53.0.0:
|
||||
version "53.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-53.0.0.tgz#df3a5c9ecabeb759e6fd867b2d84198466ac8c4d"
|
||||
integrity sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.22.20"
|
||||
"@babel/helper-validator-identifier" "^7.24.5"
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
"@eslint/eslintrc" "^2.1.4"
|
||||
"@eslint/eslintrc" "^3.0.2"
|
||||
ci-info "^4.0.0"
|
||||
clean-regexp "^1.0.0"
|
||||
core-js-compat "^3.34.0"
|
||||
core-js-compat "^3.37.0"
|
||||
esquery "^1.5.0"
|
||||
indent-string "^4.0.0"
|
||||
is-builtin-module "^3.2.1"
|
||||
@ -3986,13 +3996,13 @@ eslint-plugin-unicorn@^52.0.0:
|
||||
read-pkg-up "^7.0.1"
|
||||
regexp-tree "^0.1.27"
|
||||
regjsparser "^0.10.0"
|
||||
semver "^7.5.4"
|
||||
semver "^7.6.1"
|
||||
strip-indent "^3.0.0"
|
||||
|
||||
eslint-plugin-vue@^9.25.0:
|
||||
version "9.25.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz#615cb7bb6d0e2140d21840b9aa51dce69e803e7a"
|
||||
integrity sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==
|
||||
eslint-plugin-vue@^9.26.0:
|
||||
version "9.26.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz#bf7f5cce62c8f878059b91edae44d22974133af5"
|
||||
integrity sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
globals "^13.24.0"
|
||||
@ -4049,6 +4059,11 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
|
||||
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
||||
|
||||
eslint-visitor-keys@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
|
||||
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
|
||||
|
||||
eslint@^8.57.0:
|
||||
version "8.57.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
|
||||
@ -4093,6 +4108,15 @@ eslint@^8.57.0:
|
||||
strip-ansi "^6.0.1"
|
||||
text-table "^0.2.0"
|
||||
|
||||
espree@^10.0.1:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
|
||||
integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==
|
||||
dependencies:
|
||||
acorn "^8.11.3"
|
||||
acorn-jsx "^5.3.2"
|
||||
eslint-visitor-keys "^4.0.0"
|
||||
|
||||
espree@^9.0.0, espree@^9.3.1, espree@^9.4.0, espree@^9.6.0, espree@^9.6.1:
|
||||
version "9.6.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
|
||||
@ -4645,7 +4669,7 @@ glob-to-regexp@^0.4.1:
|
||||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
|
||||
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
|
||||
|
||||
glob@10.3.10, glob@^10.3.7:
|
||||
glob@^10.3.7:
|
||||
version "10.3.10"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
|
||||
integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
|
||||
@ -4727,6 +4751,11 @@ globals@^13.19.0, globals@^13.24.0:
|
||||
dependencies:
|
||||
type-fest "^0.20.2"
|
||||
|
||||
globals@^14.0.0:
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
|
||||
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
|
||||
|
||||
globals@^15.0.0:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-15.1.0.tgz#4e03d200c8362201636b8cdfaa316d6cef67ff1e"
|
||||
@ -5736,59 +5765,59 @@ lazy-val@^1.0.4, lazy-val@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
|
||||
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
|
||||
|
||||
lefthook-darwin-arm64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.10.tgz#31c6ba2f0e5c24a938b468f77bdff3b829bb528d"
|
||||
integrity sha512-Hh11OkoKG7FEOByS1dcgNV7ETq45VmwBbw0VPTiBznyfOG4k+pi0fIdc1qbmbxvYqNE0r420QR/Q3bimaa4Kxg==
|
||||
lefthook-darwin-arm64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.6.12.tgz#82477afe106d114a3432b2ef279ccc1ef6b28cbb"
|
||||
integrity sha512-IJa50i+78nGxtSvnxLSDfSjBjjM7Ixl03V4+yl3Kdn+S+FwzEZet3LYTLbnKFUVy9Bg23obI3yXgwUx+tJjFXg==
|
||||
|
||||
lefthook-darwin-x64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.10.tgz#4d49622dccb0f3ff7a6a2c4d4a9af0c098e2595c"
|
||||
integrity sha512-FiOB0t5OBcQ8OnG/LSdfUYj736SJdlLjWuOZ4wTlJ7EUrHditieap6VNAxwMmFVyQN0X2ZwKWytwY35y+Hflhw==
|
||||
lefthook-darwin-x64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.6.12.tgz#2d298d79a98cd5d183ae9c3eb0a7732f42f7cba8"
|
||||
integrity sha512-h11ByUtwM78FShgWgSUyyZtwKW6pjYfYvTygw24c/lZXKjupfowK5Ps5A73hCsjr0AEJNVpgW1S5Jd22gIJJCA==
|
||||
|
||||
lefthook-freebsd-arm64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.10.tgz#b3594d47582a2b90025c585ec6ec85a10b515294"
|
||||
integrity sha512-IxGgS3RrNwk3Kr83o5SQhGxqppQi7fu2t//nsp6ocgnJeStrTtXZJOrel2VohzrFxpzQdJVXBGgUGLXtY8t8qw==
|
||||
lefthook-freebsd-arm64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.6.12.tgz#2fa66fba88e7fd7258ef406241565956a0e7b426"
|
||||
integrity sha512-Aw1+AosL8r/LFSVKG7i8GI1FpHnWFG66/6DBDUgCwNAwhNCXt7tERAM8dj9S6EqmqHCQCC0nI/6qKNBsFPk7Ow==
|
||||
|
||||
lefthook-freebsd-x64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.10.tgz#3eba68b410d4913038672404ed535b8fa5248eb1"
|
||||
integrity sha512-sFSe+dGLa4iBblWAhAGTP9moarcbFtFAH6aaCeyqSX51O6p9VPdGjqNtcE8aGbGAk4lO6v1ScRjk5ogMSinJwQ==
|
||||
lefthook-freebsd-x64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.6.12.tgz#ab2d4d1e95bbb4a6fd858bc34b22e4c9dd66d727"
|
||||
integrity sha512-G8Dg7UuRstXrqaEA8MSOZikz6PpjPUQu3QmiihzcyGdzI76jFsmjJb2vkrnvMsH9u2gWb3J4sp3TULhbMHXwSw==
|
||||
|
||||
lefthook-linux-arm64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.10.tgz#4a39cc574ea05d742fc7765a03ccae66a01a634a"
|
||||
integrity sha512-fXnKiNdRIW+FRvc1keVrvWX5EqIhVFfPjcy+PbsKdxiWRXgjtidi6LPmQ8eosH0DC9PxZ0mpdCMf40FHEZLbQA==
|
||||
lefthook-linux-arm64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.6.12.tgz#241640da8e130fa980e7e2c976fdec843d284abe"
|
||||
integrity sha512-fwO0i6x5EPelL66EwaySzGzvVbN2vLFZDUWuTi8nZzEgBsCBuG0mORxZg91cNCGLRPT3sgzWPraTkyzIJa7kHg==
|
||||
|
||||
lefthook-linux-x64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.10.tgz#546e134afea574cb72ea9b0dd2829f45ae6fb309"
|
||||
integrity sha512-bm6l2GOFnmYreZxmHb47QeOiFAItttOOxvCEX1okIRD7JbUC+lGC9evW5GJv/ltjZBoTDYEtQAUa+BpHTGuY2A==
|
||||
lefthook-linux-x64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.6.12.tgz#77e2023e733a50b68a123b791c3ec3bd63420398"
|
||||
integrity sha512-pRAZKZhSoirjRwDF0TrqxgkeXtUmJqaUi0kGmMJmutToqo9IXQcnpueVmyV9Z1m6lLJn4PpKoFydY6tFXqvyNQ==
|
||||
|
||||
lefthook-windows-arm64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.10.tgz#4a3feeb23cf2118de5025f65b5c239ca05ed54d8"
|
||||
integrity sha512-pFxT8KbOMzGxj6cz4glHYwQSNC7XCuy9RDqIO0AxPlpATsCpapkF4ngDxBT1iFv2VhdeweMa7RXUDsMAGQA4Qw==
|
||||
lefthook-windows-arm64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.6.12.tgz#1ae4fa50895c5c406d89b117ba8ed214501b885e"
|
||||
integrity sha512-jMMIoqNKtiqGrwyWeN3JXGXi7H7iAXsGB5v4DkcUbdw9y50qhruxWz84I2PoxwYmZVeMxRR+VpYvS7nOvBmzWA==
|
||||
|
||||
lefthook-windows-x64@1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.10.tgz#fb775fbc14d6122cec5fb041c442951175dd8fc2"
|
||||
integrity sha512-fcDnUSTv95AdLvm0NIrn3jBWXuRq8SlbDDjkkB5OHLiSmjz4eOr6wyD7xceDp33zZgZmWFzHebJngxxcIaUuHw==
|
||||
lefthook-windows-x64@1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.6.12.tgz#ea67ff6e2c42f72edcbb41726b357244204f9410"
|
||||
integrity sha512-XqEBVIhp/Fd1Fs+VBlPhrSJlUkyXEJuxQmiYSYow3C18RNpQQrJFVFpz0wE/IDTn2jOXx+p5+hcdlJb+s6bnpA==
|
||||
|
||||
lefthook@^1.6.10:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.10.tgz#f0175c1042635d54a15687e6f2f7109fc6c40ce3"
|
||||
integrity sha512-HeVjsDCrHLe9htQHbLuQJu2YdLK6Tl5bh36fOpmXqckEXTI0BDR0Y5JYc7G5Inj4YXQsc51a9dUDZMeniSnSag==
|
||||
lefthook@^1.6.12:
|
||||
version "1.6.12"
|
||||
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.6.12.tgz#46aad7e0df047b6465a3b8e059ee08e3a8272664"
|
||||
integrity sha512-SoHhB0L1D5twH5KKsGAT1h4qF+RhGfPo/JC5z60H0RDuFWtSwFNOeFpT4Qa7XwM6J9c1fvqZzOH9/4XF7dG9Uw==
|
||||
optionalDependencies:
|
||||
lefthook-darwin-arm64 "1.6.10"
|
||||
lefthook-darwin-x64 "1.6.10"
|
||||
lefthook-freebsd-arm64 "1.6.10"
|
||||
lefthook-freebsd-x64 "1.6.10"
|
||||
lefthook-linux-arm64 "1.6.10"
|
||||
lefthook-linux-x64 "1.6.10"
|
||||
lefthook-windows-arm64 "1.6.10"
|
||||
lefthook-windows-x64 "1.6.10"
|
||||
lefthook-darwin-arm64 "1.6.12"
|
||||
lefthook-darwin-x64 "1.6.12"
|
||||
lefthook-freebsd-arm64 "1.6.12"
|
||||
lefthook-freebsd-x64 "1.6.12"
|
||||
lefthook-linux-arm64 "1.6.12"
|
||||
lefthook-linux-x64 "1.6.12"
|
||||
lefthook-windows-arm64 "1.6.12"
|
||||
lefthook-windows-x64 "1.6.12"
|
||||
|
||||
levn@^0.4.1:
|
||||
version "0.4.1"
|
||||
@ -5805,10 +5834,10 @@ lie@3.1.1:
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lilconfig@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc"
|
||||
integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==
|
||||
lilconfig@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3"
|
||||
integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.2.4"
|
||||
@ -6629,14 +6658,6 @@ path-type@^5.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8"
|
||||
integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==
|
||||
|
||||
path@0.12.7:
|
||||
version "0.12.7"
|
||||
resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
|
||||
integrity sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==
|
||||
dependencies:
|
||||
process "^0.11.1"
|
||||
util "^0.10.3"
|
||||
|
||||
pend@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
@ -6720,106 +6741,106 @@ portal-vue@^2.1.7:
|
||||
resolved "https://registry.yarnpkg.com/portal-vue/-/portal-vue-2.1.7.tgz#ea08069b25b640ca08a5b86f67c612f15f4e4ad4"
|
||||
integrity sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==
|
||||
|
||||
postcss-calc@^9.0.1:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6"
|
||||
integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==
|
||||
postcss-calc@^10.0.0:
|
||||
version "10.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.0.0.tgz#aca29a1c66dd481ca30d08f6932b1274a1003716"
|
||||
integrity sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.11"
|
||||
postcss-selector-parser "^6.0.16"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-colormin@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.2.tgz#2af9ce753937b08e058dbc6879e4aedfab42806b"
|
||||
integrity sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==
|
||||
postcss-colormin@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.0.tgz#76b9e40eff69a363c1fc5ce2f0ece1d4a01d1de8"
|
||||
integrity sha512-5CN6fqtsEtEtwf3mFV3B4UaZnlYljPpzmGeDB4yCK067PnAtfLe9uX2aFZaEwxHE7HopG5rUkW8gyHrNAesHEg==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
browserslist "^4.23.0"
|
||||
caniuse-api "^3.0.0"
|
||||
colord "^2.9.1"
|
||||
colord "^2.9.3"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-convert-values@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.2.tgz#c4a7509aeb1cc7ac3f6948fcbffc2bf8cac7c56a"
|
||||
integrity sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw==
|
||||
postcss-convert-values@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.0.tgz#4a53e79c4bd81cfed8a7ed3fffb7b255a2f5f300"
|
||||
integrity sha512-bMuzDgXBbFbByPgj+/r6va8zNuIDUaIIbvAFgdO1t3zdgJZ77BZvu6dfWyd6gHEJnYzmeVr9ayUsAQL3/qLJ0w==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
browserslist "^4.23.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-discard-comments@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.1.tgz#46176212bd9c3e5f48aa4b8b4868786726c41d36"
|
||||
integrity sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==
|
||||
postcss-discard-comments@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.0.tgz#3919e4237630f74927f3976ac5789cfc26731494"
|
||||
integrity sha512-xpSdzRqYmy4YIVmjfGyYXKaI1SRnK6CTr+4Zmvyof8ANwvgfZgGdVtmgAvzh59gJm808mJCWQC9tFN0KF5dEXA==
|
||||
|
||||
postcss-discard-duplicates@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.1.tgz#112b1a95948e69b3484fdd43584dda6930977939"
|
||||
integrity sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==
|
||||
postcss-discard-duplicates@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.0.tgz#47ae1154cc89ad0a50099fbac1f74c942214c961"
|
||||
integrity sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==
|
||||
|
||||
postcss-discard-empty@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.1.tgz#b34cb45ec891246da4506b53e352390fdef126c4"
|
||||
integrity sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==
|
||||
postcss-discard-empty@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz#218829d1ef0a5d5142dd62f0aa60e00e599d2033"
|
||||
integrity sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==
|
||||
|
||||
postcss-discard-overridden@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.1.tgz#c63c559237758d74bc505452393a64dda9b19ef4"
|
||||
integrity sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==
|
||||
postcss-discard-overridden@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz#b123ea51e3d4e1d0a254cf71eaff1201926d319c"
|
||||
integrity sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==
|
||||
|
||||
postcss-media-query-parser@^0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
|
||||
integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==
|
||||
|
||||
postcss-merge-longhand@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz#cd4e83014851da59545e9a906b245615550f4064"
|
||||
integrity sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==
|
||||
postcss-merge-longhand@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-7.0.0.tgz#aabfae74428a5506c4d50842445845c1cc10c9c6"
|
||||
integrity sha512-0X8I4/9+G03X5/5NnrfopG/YEln2XU8heDh7YqBaiq2SeaKIG3n66ShZPjIolmVuLBQ0BEm3yS8o1mlCLHdW7A==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
stylehacks "^6.0.2"
|
||||
stylehacks "^7.0.0"
|
||||
|
||||
postcss-merge-rules@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.3.tgz#08fcf714faaad75b1980ecd961b080ae2f8ddeb3"
|
||||
integrity sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==
|
||||
postcss-merge-rules@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.0.tgz#069a427807fdb1e2dcca3bf218d0a9f70103526a"
|
||||
integrity sha512-Zty3VlOsD6VSjBMu6PiHCVpLegtBT/qtZRVBcSeyEZ6q1iU5qTYT0WtEoLRV+YubZZguS5/ycfP+NRiKfjv6aw==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
browserslist "^4.23.0"
|
||||
caniuse-api "^3.0.0"
|
||||
cssnano-utils "^4.0.1"
|
||||
postcss-selector-parser "^6.0.15"
|
||||
cssnano-utils "^5.0.0"
|
||||
postcss-selector-parser "^6.0.16"
|
||||
|
||||
postcss-minify-font-values@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz#788eb930168be90225f3937f0b70aa19d8b532b2"
|
||||
integrity sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==
|
||||
postcss-minify-font-values@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz#d16a75a2548e000779566b3568fc874ee5d0aa17"
|
||||
integrity sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-minify-gradients@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz#4faf1880b483dc37016658aa186b42194ff9b5bc"
|
||||
integrity sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==
|
||||
postcss-minify-gradients@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz#f6d84456e6d49164a55d0e45bb1b1809c6cf0959"
|
||||
integrity sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==
|
||||
dependencies:
|
||||
colord "^2.9.1"
|
||||
cssnano-utils "^4.0.1"
|
||||
colord "^2.9.3"
|
||||
cssnano-utils "^5.0.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-minify-params@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.2.tgz#bd64af642fa5610281b8a9461598bbb91f92ae05"
|
||||
integrity sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==
|
||||
postcss-minify-params@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.0.tgz#dfa8263d38570b1116da2c72f69190ea665b17aa"
|
||||
integrity sha512-XOJAuX8Q/9GT1sGxlUvaFEe2H9n50bniLZblXXsAT/BwSfFYvzSZeFG7uupwc0KbKpTnflnQ7aMwGzX6JUWliQ==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
cssnano-utils "^4.0.1"
|
||||
browserslist "^4.23.0"
|
||||
cssnano-utils "^5.0.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-minify-selectors@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.2.tgz#62065b38d3453ddc6627ba50e4f4a2154b031aa0"
|
||||
integrity sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==
|
||||
postcss-minify-selectors@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-7.0.0.tgz#5dedb26806f58d683a3bb362e095ad5aa24f1bf6"
|
||||
integrity sha512-f00CExZhD6lNw2vTZbcnmfxVgaVKzUw6IRsIFX3JTT8GdsoABc1WnhhGwL1i8YPJ3sSWw39fv7XPtvLb+3Uitw==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.15"
|
||||
postcss-selector-parser "^6.0.16"
|
||||
|
||||
postcss-modules-extract-imports@^3.1.0:
|
||||
version "3.1.0"
|
||||
@ -6849,88 +6870,88 @@ postcss-modules-values@^4.0.0:
|
||||
dependencies:
|
||||
icss-utils "^5.0.0"
|
||||
|
||||
postcss-normalize-charset@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.1.tgz#5f70e1eb8bbdbcfcbed060ef70f179e8fef57d0c"
|
||||
integrity sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==
|
||||
postcss-normalize-charset@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz#92244ae73c31bf8f8885d5f16ff69e857ac6c001"
|
||||
integrity sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==
|
||||
|
||||
postcss-normalize-display-values@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.1.tgz#ff9aa30bbf1283294bfd9cc8b6fb81ff060a7f2d"
|
||||
integrity sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==
|
||||
postcss-normalize-display-values@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz#01fb50e5e97ef8935363629bea5a6d3b3aac1342"
|
||||
integrity sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-positions@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.1.tgz#41ffdc72994f024c6cd6e91dbfb40ab9abe6fe90"
|
||||
integrity sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==
|
||||
postcss-normalize-positions@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz#4eebd7c9d3dde40c97b8047cad38124fc844c463"
|
||||
integrity sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-repeat-style@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.1.tgz#55dc54b6f80305b280a379899a6626e0a07b04a8"
|
||||
integrity sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==
|
||||
postcss-normalize-repeat-style@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz#0cb784655d5714d29bd3bda6dee2fb628aa7227b"
|
||||
integrity sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-string@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.1.tgz#7605e0fb4ec7bf2709709991d13a949e4419db1d"
|
||||
integrity sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==
|
||||
postcss-normalize-string@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz#a119d3e63a9614570d8413d572fb9fc8c6a64e8c"
|
||||
integrity sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-timing-functions@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.1.tgz#ef937b7ca2fd62ed0b46645ea5728b842a3600db"
|
||||
integrity sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==
|
||||
postcss-normalize-timing-functions@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz#99d0ee8c4b23b7f4355fafb91385833b9b07108b"
|
||||
integrity sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-unicode@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.2.tgz#361026744ff11baebaec771b60c2a5f36f274fd0"
|
||||
integrity sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==
|
||||
postcss-normalize-unicode@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.0.tgz#bd66bfc238bf4d1eaea356639260c04fce408476"
|
||||
integrity sha512-OnKV52/VFFDAim4n0pdI+JAhsolLBdnCKxE6VV5lW5Q/JeVGFN8UM8ur6/A3EAMLsT1ZRm3fDHh/rBoBQpqi2w==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
browserslist "^4.23.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-url@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.1.tgz#eae58cb4f5f9a4fa5bbbf6d4222dff534ad46186"
|
||||
integrity sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==
|
||||
postcss-normalize-url@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz#c88cb7cf8952d3ff631e4eba924e7b060ca802f6"
|
||||
integrity sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-normalize-whitespace@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.1.tgz#b5933750b938814c028d3d2b2e5c0199e0037b53"
|
||||
integrity sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==
|
||||
postcss-normalize-whitespace@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz#46b025f0bea72139ddee63015619b0c21cebd845"
|
||||
integrity sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-ordered-values@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.1.tgz#553e735d009065b362da93340e57f43d5f2d0fbc"
|
||||
integrity sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==
|
||||
postcss-ordered-values@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-7.0.0.tgz#cea4e2a140ed1c7b055e0ab967b82a36b584debf"
|
||||
integrity sha512-KROvC63A8UQW1eYDljQe1dtwc1E/M+mMwDT6z7khV/weHYLWTghaLRLunU7x1xw85lWFwVZOAGakxekYvKV+0w==
|
||||
dependencies:
|
||||
cssnano-utils "^4.0.1"
|
||||
cssnano-utils "^5.0.0"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
postcss-reduce-initial@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.2.tgz#763d25902406c872264041df69f182eb15a5d9be"
|
||||
integrity sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==
|
||||
postcss-reduce-initial@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.0.tgz#a9e64778dd44604c2bda109e2fd14b99ab0d1416"
|
||||
integrity sha512-iqGgmBxY9LrblZ0BKLjmrA1mC/cf9A/wYCCqSmD6tMi+xAyVl0+DfixZIHSVDMbCPRPjNmVF0DFGth/IDGelFQ==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
browserslist "^4.23.0"
|
||||
caniuse-api "^3.0.0"
|
||||
|
||||
postcss-reduce-transforms@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.1.tgz#7bf59d7c6e7066e3b18ef17237d2344bd3da6d75"
|
||||
integrity sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==
|
||||
postcss-reduce-transforms@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz#0386080a14e5faad9f8eda33375b79fe7c4f9677"
|
||||
integrity sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
@ -6949,7 +6970,7 @@ postcss-scss@^4.0.9:
|
||||
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685"
|
||||
integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==
|
||||
|
||||
postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
|
||||
postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
|
||||
version "6.0.16"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04"
|
||||
integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==
|
||||
@ -6957,20 +6978,20 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.15, postcss-select
|
||||
cssesc "^3.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
postcss-svgo@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.2.tgz#dbc9d03e7f346bc0d82443078602a951e0214836"
|
||||
integrity sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==
|
||||
postcss-svgo@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-7.0.0.tgz#2f11b45c6fa42da155fd7c16c44e69bf086c5992"
|
||||
integrity sha512-Xj5DRdvA97yRy3wjbCH2NKXtDUwEnph6EHr5ZXszsBVKCNrKXYBjzAXqav7/Afz5WwJ/1peZoTguCEJIg7ytmA==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.2.0"
|
||||
svgo "^3.2.0"
|
||||
|
||||
postcss-unique-selectors@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.2.tgz#09a34a5a31a649d3e9bca5962af0616f39d071d2"
|
||||
integrity sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==
|
||||
postcss-unique-selectors@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-7.0.0.tgz#8cc2f919bce33c429cce93624f2b8f9bbd4bd882"
|
||||
integrity sha512-NYFqcft7vVQMZlQPsMdMPy+qU/zDpy95Malpw4GeA9ZZjM6dVXDshXtDmLc0m4WCD6XeZCJqjTfPT1USsdt+rA==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.15"
|
||||
postcss-selector-parser "^6.0.16"
|
||||
|
||||
postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
|
||||
version "4.2.0"
|
||||
@ -7024,7 +7045,7 @@ process-nextick-args@~2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
process@^0.11.1, process@^0.11.10:
|
||||
process@^0.11.10:
|
||||
version "0.11.10"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
|
||||
@ -7431,10 +7452,10 @@ rimraf@^3.0.0, rimraf@^3.0.2:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^5.0.5:
|
||||
version "5.0.5"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf"
|
||||
integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==
|
||||
rimraf@^5.0.5, rimraf@^5.0.7:
|
||||
version "5.0.7"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.7.tgz#27bddf202e7d89cb2e0381656380d1734a854a74"
|
||||
integrity sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==
|
||||
dependencies:
|
||||
glob "^10.3.7"
|
||||
|
||||
@ -7531,10 +7552,10 @@ sass-loader@^14.2.1:
|
||||
dependencies:
|
||||
neo-async "^2.6.2"
|
||||
|
||||
sass@^1.76.0:
|
||||
version "1.76.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.76.0.tgz#fe15909500735ac154f0dc7386d656b62b03987d"
|
||||
integrity sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw==
|
||||
sass@^1.77.2:
|
||||
version "1.77.2"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa"
|
||||
integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
@ -7592,12 +7613,10 @@ semver@^6.2.0, semver@^6.3.0, semver@^6.3.1:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
||||
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
|
||||
version "7.6.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
|
||||
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.1:
|
||||
version "7.6.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
|
||||
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
|
||||
|
||||
send@0.18.0:
|
||||
version "0.18.0"
|
||||
@ -7909,16 +7928,7 @@ statuses@2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
@ -8004,14 +8014,7 @@ string_decoder@~1.1.1:
|
||||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
@ -8052,13 +8055,13 @@ strip-json-comments@^3.1.1:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
stylehacks@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.2.tgz#5bf2654561752547d4548765f35c9a49659b3742"
|
||||
integrity sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==
|
||||
stylehacks@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.0.tgz#68e8ee54724671c0c698be82e1299c6548c31921"
|
||||
integrity sha512-47Nw4pQ6QJb4CA6dzF2m9810sjQik4dfk4UwAm5wlwhrW3syzZKF8AR4/cfO3Cr6lsFgAoznQq0Wg57qhjTA2A==
|
||||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
postcss-selector-parser "^6.0.15"
|
||||
browserslist "^4.23.0"
|
||||
postcss-selector-parser "^6.0.16"
|
||||
|
||||
stylelint-config-recommended@^14.0.0:
|
||||
version "14.0.0"
|
||||
@ -8207,10 +8210,10 @@ svgo@^3.2.0:
|
||||
csso "^5.0.5"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
swiper@^11.1.1:
|
||||
version "11.1.1"
|
||||
resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.1.tgz#5efaa222d4a47a3ac75090cfc2fda6e53e564982"
|
||||
integrity sha512-jGmEA/fNz1lACIcY4/40ggm1Gcyv+EUivmgV/Jd2WFPsEJhbWXnRAwzZR8OPjkBLtDxmzcoYG/iiAMWfRs0YKQ==
|
||||
swiper@^11.1.3:
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.3.tgz#ff5cbeea349d207a2423c4106b1905cb12804a19"
|
||||
integrity sha512-80MSxonyTxrGcaWj9YgvvhD8OG0B9/9IVZP33vhIEvyWvmKjnQDBieO+29wKvMx285sAtvZyrWBdkxaw6+D3aw==
|
||||
|
||||
synckit@^0.6.0:
|
||||
version "0.6.2"
|
||||
@ -8584,13 +8587,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||
|
||||
util@^0.10.3:
|
||||
version "0.10.4"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
|
||||
integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
|
||||
dependencies:
|
||||
inherits "2.0.3"
|
||||
|
||||
util@^0.12.4:
|
||||
version "0.12.4"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
|
||||
@ -8903,14 +8899,6 @@ webpack-sources@^3.2.3:
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
|
||||
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||
|
||||
webpack-watch-external-files-plugin@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack-watch-external-files-plugin/-/webpack-watch-external-files-plugin-3.0.0.tgz#65d75389b1c9b05e84a2cfad83897ac12f146c7e"
|
||||
integrity sha512-u0geLnZ/uJXh92B+40apyovnexoP+m9I6QktyGlG8rP6CXXYKe3yhG7zY9P2Wbg75sPTP1PYv2rropRlZdxg9A==
|
||||
dependencies:
|
||||
glob "10.3.10"
|
||||
path "0.12.7"
|
||||
|
||||
webpack@^5.91.0:
|
||||
version "5.91.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9"
|
||||
@ -9008,16 +8996,7 @@ wildcard@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
||||
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
|
Loading…
Reference in New Issue
Block a user