コミットを比較
65 コミット
cbf0710e0a
...
0928937f29
作成者 | SHA1 | 日付 |
---|---|---|
Nikotile | 0928937f29 | |
HJ | 021fbd9b58 | |
jonossa | c9072ddb0b | |
HJ | fa532b1f00 | |
HJ | 19618db192 | |
Poesty Li | 624da7240e | |
HJ | 716b648014 | |
Alexander Tumin | 493120b545 | |
Alexander Tumin | 3403f6a1ed | |
Alexander Tumin | 306e254c15 | |
Alexander Tumin | 832019b2c2 | |
Alexander Tumin | 998aa8f732 | |
HJ | 8abaf8fa37 | |
tusooa | da46c30893 | |
HJ | 0842193957 | |
HJ | 2e20c2c46a | |
tusooa | 88db557141 | |
tusooa | 1a852b96ef | |
tusooa | 830085b3e4 | |
tusooa | a7ad7f9f17 | |
HJ | 0d9054d165 | |
tusooa | 763ae182b8 | |
HJ | 602c48d1fb | |
Pleroma Renovate Bot | 355f0fd35c | |
tusooa | 5468309f6a | |
HJ | eec27700f0 | |
tusooa | 2316bcc842 | |
HJ | e45dff0b26 | |
tusooa | 65d78ced93 | |
HJ | 7ae61f6bd5 | |
tusooa | 7ccbe902a2 | |
tusooa | 423d1e0433 | |
Pacific Coast Highway | 597c069e36 | |
Dmytro Poltavchenko | 30f1502df6 | |
nixe neko | 2e9014abd7 | |
Poesty Li | cb18497902 | |
Poesty Li | 6dc683f602 | |
Ryan Chiang | 79f1d79c4e | |
HJ | 06551d447c | |
tusooa | 902954b298 | |
Pleroma Renovate Bot | 621242f5a1 | |
tusooa | 5f8988de92 | |
Pleroma Renovate Bot | c1249ffaf3 | |
tusooa | ceebf6ac2e | |
Pleroma Renovate Bot | 8351e73bd7 | |
tusooa | 04f5a448e4 | |
Pleroma Renovate Bot | d2716341cb | |
tusooa | 6158b8667e | |
HJ | f229c4a106 | |
HJ | af22092472 | |
HJ | a08378253f | |
tusooa | 2635e24679 | |
tusooa | 93e01aefad | |
Pleroma Renovate Bot | ec0b239496 | |
Pleroma Renovate Bot | 31c9b6885b | |
tusooa | 5f12c3ae76 | |
tusooa | d159031121 | |
Tusooa Zhu | 68110ce825 | |
tusooa | 1ab958ba6b | |
tusooa | 5243632678 | |
tusooa | 5478192e20 | |
tusooa | 246593970b | |
tusooa | 72cb9e8bdb | |
tusooa | 6235af4592 | |
tusooa | 4db7f07421 |
28
CHANGELOG.md
28
CHANGELOG.md
|
@ -3,6 +3,34 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
|
## 2.5.1
|
||||||
|
### Fixed
|
||||||
|
- Checkboxes in settings can now work with screenreaders
|
||||||
|
- Autocomplete in edit boxes can now work with screenreaders
|
||||||
|
- Status interact buttons now have focus indicator for anonymous users
|
||||||
|
- Top bar buttons now correctly have text labels
|
||||||
|
- It is now possible to register if the site admin requires birthday to register
|
||||||
|
- User cards from search results will correctly popup
|
||||||
|
- Fix notification attachment icon overflow
|
||||||
|
- Editing mute words is less laggy
|
||||||
|
- Repeater's name will no longer mess up with the directionality of the text sitting on the same line
|
||||||
|
- Unauthenticated access will give better error messages
|
||||||
|
- It is now easier to close the media viewer with a mouse when there is only one image
|
||||||
|
- Deleting profile fields can work properly
|
||||||
|
- Clicking the react button will correctly focus the search box
|
||||||
|
- Clicking buttons on the top-bar will no longer bring you to the top of the page
|
||||||
|
- Emoji picker is much faster to load
|
||||||
|
- `blockquote`s have a better display style
|
||||||
|
- Announcements posting and editing are now available to everyone with such a privilege, not just admins
|
||||||
|
- Adding or removing list members will actually work
|
||||||
|
- Emojis without a pack are now correctly displayed in emoji picker
|
||||||
|
- Changing notification settings will actually work
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- You can now set and see birthdays
|
||||||
|
- Optional confirmation dialogs when performing various actions
|
||||||
|
- You can now set fallback languages
|
||||||
|
|
||||||
## 2.5.0 - 23.12.2022
|
## 2.5.0 - 23.12.2022
|
||||||
### Fixed
|
### Fixed
|
||||||
- UI no longer lags when switching between mobile and desktop mode
|
- UI no longer lags when switching between mobile and desktop mode
|
||||||
|
|
26
package.json
26
package.json
|
@ -16,12 +16,12 @@
|
||||||
"lint-fix": "eslint --fix --ext .js,.vue src test/unit/specs test/e2e/specs"
|
"lint-fix": "eslint --fix --ext .js,.vue src test/unit/specs test/e2e/specs"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.20.7",
|
"@babel/runtime": "7.21.0",
|
||||||
"@chenfengyuan/vue-qrcode": "2.0.0",
|
"@chenfengyuan/vue-qrcode": "2.0.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "6.2.1",
|
"@fortawesome/fontawesome-svg-core": "6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "6.2.1",
|
"@fortawesome/free-regular-svg-icons": "6.3.0",
|
||||||
"@fortawesome/free-solid-svg-icons": "6.2.1",
|
"@fortawesome/free-solid-svg-icons": "6.3.0",
|
||||||
"@fortawesome/vue-fontawesome": "3.0.2",
|
"@fortawesome/vue-fontawesome": "3.0.3",
|
||||||
"@kazvmoe-infra/pinch-zoom-element": "1.2.0",
|
"@kazvmoe-infra/pinch-zoom-element": "1.2.0",
|
||||||
"@kazvmoe-infra/unicode-emoji-json": "0.4.0",
|
"@kazvmoe-infra/unicode-emoji-json": "0.4.0",
|
||||||
"@ruffle-rs/ruffle": "0.1.0-nightly.2022.7.12",
|
"@ruffle-rs/ruffle": "0.1.0-nightly.2022.7.12",
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
"localforage": "1.10.0",
|
"localforage": "1.10.0",
|
||||||
"parse-link-header": "2.0.0",
|
"parse-link-header": "2.0.0",
|
||||||
"phoenix": "1.6.2",
|
"phoenix": "1.6.2",
|
||||||
"punycode.js": "2.1.0",
|
"punycode.js": "2.3.0",
|
||||||
"qrcode": "1.5.0",
|
"qrcode": "1.5.0",
|
||||||
"querystring-es3": "0.2.1",
|
"querystring-es3": "0.2.1",
|
||||||
"url": "0.11.0",
|
"url": "0.11.0",
|
||||||
|
@ -49,19 +49,19 @@
|
||||||
"vuex": "4.1.0"
|
"vuex": "4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.20.7",
|
"@babel/core": "7.21.0",
|
||||||
"@babel/eslint-parser": "7.19.1",
|
"@babel/eslint-parser": "7.19.1",
|
||||||
"@babel/plugin-transform-runtime": "7.19.6",
|
"@babel/plugin-transform-runtime": "7.21.0",
|
||||||
"@babel/preset-env": "7.20.2",
|
"@babel/preset-env": "7.20.2",
|
||||||
"@babel/register": "7.18.9",
|
"@babel/register": "7.21.0",
|
||||||
"@intlify/vue-i18n-loader": "5.0.0",
|
"@intlify/vue-i18n-loader": "5.0.0",
|
||||||
"@ungap/event-target": "0.2.3",
|
"@ungap/event-target": "0.2.3",
|
||||||
"@vue/babel-helper-vue-jsx-merge-props": "1.4.0",
|
"@vue/babel-helper-vue-jsx-merge-props": "1.4.0",
|
||||||
"@vue/babel-plugin-jsx": "1.1.1",
|
"@vue/babel-plugin-jsx": "1.1.1",
|
||||||
"@vue/compiler-sfc": "3.2.45",
|
"@vue/compiler-sfc": "3.2.45",
|
||||||
"@vue/test-utils": "2.2.7",
|
"@vue/test-utils": "2.2.8",
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.13",
|
||||||
"babel-loader": "9.1.0",
|
"babel-loader": "9.1.2",
|
||||||
"babel-plugin-lodash": "3.3.4",
|
"babel-plugin-lodash": "3.3.4",
|
||||||
"chai": "4.3.7",
|
"chai": "4.3.7",
|
||||||
"chalk": "1.1.3",
|
"chalk": "1.1.3",
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
"css-loader": "6.7.3",
|
"css-loader": "6.7.3",
|
||||||
"css-minimizer-webpack-plugin": "4.2.2",
|
"css-minimizer-webpack-plugin": "4.2.2",
|
||||||
"custom-event-polyfill": "1.0.7",
|
"custom-event-polyfill": "1.0.7",
|
||||||
"eslint": "8.32.0",
|
"eslint": "8.33.0",
|
||||||
"eslint-config-standard": "17.0.0",
|
"eslint-config-standard": "17.0.0",
|
||||||
"eslint-formatter-friendly": "7.0.0",
|
"eslint-formatter-friendly": "7.0.0",
|
||||||
"eslint-plugin-import": "2.27.5",
|
"eslint-plugin-import": "2.27.5",
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"mini-css-extract-plugin": "2.7.2",
|
"mini-css-extract-plugin": "2.7.2",
|
||||||
"mocha": "10.2.0",
|
"mocha": "10.2.0",
|
||||||
"nightwatch": "2.6.10",
|
"nightwatch": "2.6.11",
|
||||||
"opn": "5.5.0",
|
"opn": "5.5.0",
|
||||||
"ora": "0.4.1",
|
"ora": "0.4.1",
|
||||||
"postcss": "8.4.20",
|
"postcss": "8.4.20",
|
||||||
|
|
14
src/App.scss
14
src/App.scss
|
@ -580,8 +580,6 @@ textarea,
|
||||||
}
|
}
|
||||||
|
|
||||||
&[type="checkbox"] {
|
&[type="checkbox"] {
|
||||||
display: none;
|
|
||||||
|
|
||||||
&:checked + label::before {
|
&:checked + label::before {
|
||||||
color: $fallback--text;
|
color: $fallback--text;
|
||||||
color: var(--inputText, $fallback--text);
|
color: var(--inputText, $fallback--text);
|
||||||
|
@ -887,3 +885,15 @@ option {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
/* stylelint-enable no-descending-specificity */
|
/* stylelint-enable no-descending-specificity */
|
||||||
|
|
||||||
|
.visible-for-screenreader-only {
|
||||||
|
display: block;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
visibility: visible;
|
||||||
|
clip: rect(0 0 0 0);
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
|
@ -253,6 +253,7 @@ const getNodeInfo = async ({ store }) => {
|
||||||
store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })
|
store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })
|
||||||
store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })
|
store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })
|
||||||
store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })
|
store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })
|
||||||
|
store.dispatch('setInstanceOption', { name: 'pleromaCustomEmojiReactionsAvailable', value: features.includes('pleroma_custom_emoji_reactions') })
|
||||||
store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })
|
store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })
|
||||||
store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })
|
store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })
|
||||||
store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })
|
store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })
|
||||||
|
|
|
@ -5,12 +5,16 @@
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
|
class="visible-for-screenreader-only"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:checked="modelValue"
|
:checked="modelValue"
|
||||||
:indeterminate="indeterminate"
|
:indeterminate="indeterminate"
|
||||||
@change="$emit('update:modelValue', $event.target.checked)"
|
@change="$emit('update:modelValue', $event.target.checked)"
|
||||||
>
|
>
|
||||||
<i class="checkbox-indicator" />
|
<i
|
||||||
|
class="checkbox-indicator"
|
||||||
|
:aria-hidden="true"
|
||||||
|
/>
|
||||||
<span
|
<span
|
||||||
v-if="!!$slots.default"
|
v-if="!!$slots.default"
|
||||||
class="label"
|
class="label"
|
||||||
|
@ -33,6 +37,7 @@ export default {
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import "../../variables";
|
@import "../../variables";
|
||||||
|
@import "../../mixins";
|
||||||
|
|
||||||
.checkbox {
|
.checkbox {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -81,8 +86,6 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
display: none;
|
|
||||||
|
|
||||||
&:checked + .checkbox-indicator::before {
|
&:checked + .checkbox-indicator::before {
|
||||||
color: $fallback--text;
|
color: $fallback--text;
|
||||||
color: var(--inputText, $fallback--text);
|
color: var(--inputText, $fallback--text);
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
class="logo"
|
class="logo"
|
||||||
:to="{ name: 'root' }"
|
:to="{ name: 'root' }"
|
||||||
:style="logoBgStyle"
|
:style="logoBgStyle"
|
||||||
|
:title="sitename"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="mask"
|
class="mask"
|
||||||
|
@ -38,13 +39,13 @@
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
class="button-unstyled nav-icon"
|
class="button-unstyled nav-icon"
|
||||||
|
:title="$t('nav.preferences')"
|
||||||
@click.stop="openSettingsModal"
|
@click.stop="openSettingsModal"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110 fa-old-padding"
|
class="fa-scale-110 fa-old-padding"
|
||||||
icon="cog"
|
icon="cog"
|
||||||
:title="$t('nav.preferences')"
|
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
<a
|
<a
|
||||||
|
@ -52,26 +53,26 @@
|
||||||
href="/pleroma/admin/#/login-pleroma"
|
href="/pleroma/admin/#/login-pleroma"
|
||||||
class="nav-icon"
|
class="nav-icon"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
:title="$t('nav.administration')"
|
||||||
@click.stop
|
@click.stop
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110 fa-old-padding"
|
class="fa-scale-110 fa-old-padding"
|
||||||
icon="tachometer-alt"
|
icon="tachometer-alt"
|
||||||
:title="$t('nav.administration')"
|
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<span class="spacer" />
|
<span class="spacer" />
|
||||||
<button
|
<button
|
||||||
v-if="currentUser"
|
v-if="currentUser"
|
||||||
class="button-unstyled nav-icon"
|
class="button-unstyled nav-icon"
|
||||||
|
:title="$t('login.logout')"
|
||||||
@click.stop.prevent="logout"
|
@click.stop.prevent="logout"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
fixed-width
|
fixed-width
|
||||||
class="fa-scale-110 fa-old-padding"
|
class="fa-scale-110 fa-old-padding"
|
||||||
icon="sign-out-alt"
|
icon="sign-out-alt"
|
||||||
:title="$t('login.logout')"
|
|
||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import Completion from '../../services/completion/completion.js'
|
import Completion from '../../services/completion/completion.js'
|
||||||
import EmojiPicker from '../emoji_picker/emoji_picker.vue'
|
import EmojiPicker from '../emoji_picker/emoji_picker.vue'
|
||||||
import Popover from 'src/components/popover/popover.vue'
|
import Popover from 'src/components/popover/popover.vue'
|
||||||
|
import ScreenReaderNotice from 'src/components/screen_reader_notice/screen_reader_notice.vue'
|
||||||
import UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'
|
import UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'
|
||||||
import { take } from 'lodash'
|
import { take } from 'lodash'
|
||||||
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
||||||
|
@ -109,9 +110,10 @@ const EmojiInput = {
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
randomSeed: `${Math.random()}`.replace('.', '-'),
|
||||||
input: undefined,
|
input: undefined,
|
||||||
caretEl: undefined,
|
caretEl: undefined,
|
||||||
highlighted: 0,
|
highlighted: -1,
|
||||||
caret: 0,
|
caret: 0,
|
||||||
focused: false,
|
focused: false,
|
||||||
blurTimeout: null,
|
blurTimeout: null,
|
||||||
|
@ -125,12 +127,16 @@ const EmojiInput = {
|
||||||
components: {
|
components: {
|
||||||
Popover,
|
Popover,
|
||||||
EmojiPicker,
|
EmojiPicker,
|
||||||
UnicodeDomainIndicator
|
UnicodeDomainIndicator,
|
||||||
|
ScreenReaderNotice
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
padEmoji () {
|
padEmoji () {
|
||||||
return this.$store.getters.mergedConfig.padEmoji
|
return this.$store.getters.mergedConfig.padEmoji
|
||||||
},
|
},
|
||||||
|
defaultCandidateIndex () {
|
||||||
|
return this.$store.getters.mergedConfig.autocompleteSelect ? 0 : -1
|
||||||
|
},
|
||||||
preText () {
|
preText () {
|
||||||
return this.modelValue.slice(0, this.caret)
|
return this.modelValue.slice(0, this.caret)
|
||||||
},
|
},
|
||||||
|
@ -203,6 +209,12 @@ const EmojiInput = {
|
||||||
top: this.input.scrollTop,
|
top: this.input.scrollTop,
|
||||||
left: this.input.scrollLeft
|
left: this.input.scrollLeft
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
suggestionListId () {
|
||||||
|
return `suggestions-${this.randomSeed}`
|
||||||
|
},
|
||||||
|
suggestionItemId () {
|
||||||
|
return (index) => `suggestion-item-${index}-${this.randomSeed}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
|
@ -278,6 +290,11 @@ const EmojiInput = {
|
||||||
...rest,
|
...rest,
|
||||||
img: imageUrl || ''
|
img: imageUrl || ''
|
||||||
}))
|
}))
|
||||||
|
this.highlighted = this.defaultCandidateIndex
|
||||||
|
this.$refs.screenReaderNotice.announce(
|
||||||
|
this.$tc('tool_tip.autocomplete_available',
|
||||||
|
this.suggestions.length,
|
||||||
|
{ number: this.suggestions.length }))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -374,26 +391,27 @@ const EmojiInput = {
|
||||||
},
|
},
|
||||||
cycleBackward (e) {
|
cycleBackward (e) {
|
||||||
const len = this.suggestions.length || 0
|
const len = this.suggestions.length || 0
|
||||||
if (len > 1) {
|
|
||||||
this.highlighted -= 1
|
this.highlighted -= 1
|
||||||
if (this.highlighted < 0) {
|
if (this.highlighted === -1) {
|
||||||
this.highlighted = this.suggestions.length - 1
|
this.input.focus()
|
||||||
}
|
} else if (this.highlighted < -1) {
|
||||||
|
this.highlighted = len - 1
|
||||||
|
}
|
||||||
|
if (len > 0) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
} else {
|
|
||||||
this.highlighted = 0
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cycleForward (e) {
|
cycleForward (e) {
|
||||||
const len = this.suggestions.length || 0
|
const len = this.suggestions.length || 0
|
||||||
if (len > 1) {
|
|
||||||
this.highlighted += 1
|
this.highlighted += 1
|
||||||
if (this.highlighted >= len) {
|
if (this.highlighted >= len) {
|
||||||
this.highlighted = 0
|
this.highlighted = -1
|
||||||
}
|
this.input.focus()
|
||||||
|
}
|
||||||
|
if (len > 0) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
} else {
|
|
||||||
this.highlighted = 0
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
scrollIntoView () {
|
scrollIntoView () {
|
||||||
|
@ -540,6 +558,13 @@ const EmojiInput = {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
resize () {
|
resize () {
|
||||||
|
},
|
||||||
|
autoCompleteItemLabel (suggestion) {
|
||||||
|
if (suggestion.user) {
|
||||||
|
return suggestion.displayText + ' ' + suggestion.detailText
|
||||||
|
} else {
|
||||||
|
return this.maybeLocalizedEmojiName(suggestion)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,19 @@
|
||||||
class="emoji-input"
|
class="emoji-input"
|
||||||
:class="{ 'with-picker': !hideEmojiButton }"
|
:class="{ 'with-picker': !hideEmojiButton }"
|
||||||
>
|
>
|
||||||
<slot />
|
<slot
|
||||||
|
:id="'textbox-' + randomSeed"
|
||||||
|
:aria-owns="suggestionListId"
|
||||||
|
aria-autocomplete="both"
|
||||||
|
:aria-expanded="showSuggestions"
|
||||||
|
:aria-activedescendant="(!showSuggestions || highlighted === -1) ? '' : suggestionItemId(highlighted)"
|
||||||
|
/>
|
||||||
<!-- TODO: make the 'x' disappear if at the end maybe? -->
|
<!-- TODO: make the 'x' disappear if at the end maybe? -->
|
||||||
<div
|
<div
|
||||||
ref="hiddenOverlay"
|
ref="hiddenOverlay"
|
||||||
class="hidden-overlay"
|
class="hidden-overlay"
|
||||||
:style="overlayStyle"
|
:style="overlayStyle"
|
||||||
|
:aria-hidden="true"
|
||||||
>
|
>
|
||||||
<span>{{ preText }}</span>
|
<span>{{ preText }}</span>
|
||||||
<span
|
<span
|
||||||
|
@ -18,11 +25,16 @@
|
||||||
>x</span>
|
>x</span>
|
||||||
<span>{{ postText }}</span>
|
<span>{{ postText }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<screen-reader-notice
|
||||||
|
ref="screenReaderNotice"
|
||||||
|
aria-live="assertive"
|
||||||
|
/>
|
||||||
<template v-if="enableEmojiPicker">
|
<template v-if="enableEmojiPicker">
|
||||||
<button
|
<button
|
||||||
v-if="!hideEmojiButton"
|
v-if="!hideEmojiButton"
|
||||||
class="button-unstyled emoji-picker-icon"
|
class="button-unstyled emoji-picker-icon"
|
||||||
type="button"
|
type="button"
|
||||||
|
:title="$t('emoji.add_emoji')"
|
||||||
@click.prevent="togglePicker"
|
@click.prevent="togglePicker"
|
||||||
>
|
>
|
||||||
<FAIcon :icon="['far', 'smile-beam']" />
|
<FAIcon :icon="['far', 'smile-beam']" />
|
||||||
|
@ -43,17 +55,24 @@
|
||||||
ref="suggestorPopover"
|
ref="suggestorPopover"
|
||||||
class="autocomplete-panel"
|
class="autocomplete-panel"
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
|
:trigger-attrs="{ 'aria-hidden': true }"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div
|
<div
|
||||||
|
:id="suggestionListId"
|
||||||
ref="panel-body"
|
ref="panel-body"
|
||||||
class="autocomplete-panel-body"
|
class="autocomplete-panel-body"
|
||||||
|
role="listbox"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-for="(suggestion, index) in suggestions"
|
v-for="(suggestion, index) in suggestions"
|
||||||
|
:id="suggestionItemId(index)"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="autocomplete-item"
|
class="autocomplete-item"
|
||||||
|
role="option"
|
||||||
:class="{ highlighted: index === highlighted }"
|
:class="{ highlighted: index === highlighted }"
|
||||||
|
:aria-label="autoCompleteItemLabel(suggestion)"
|
||||||
|
:aria-selected="index === highlighted"
|
||||||
@click.stop.prevent="onClick($event, suggestion)"
|
@click.stop.prevent="onClick($event, suggestion)"
|
||||||
>
|
>
|
||||||
<span class="image">
|
<span class="image">
|
||||||
|
|
|
@ -94,8 +94,9 @@ export const suggestUsers = ({ dispatch, state }) => {
|
||||||
|
|
||||||
const newSuggestions = state.users.users.filter(
|
const newSuggestions = state.users.users.filter(
|
||||||
user =>
|
user =>
|
||||||
user.screen_name.toLowerCase().startsWith(noPrefix) ||
|
user.screen_name && user.name && (
|
||||||
user.name.toLowerCase().startsWith(noPrefix)
|
user.screen_name.toLowerCase().startsWith(noPrefix) ||
|
||||||
|
user.name.toLowerCase().startsWith(noPrefix))
|
||||||
).slice(0, 20).sort((a, b) => {
|
).slice(0, 20).sort((a, b) => {
|
||||||
let aScore = 0
|
let aScore = 0
|
||||||
let bScore = 0
|
let bScore = 0
|
||||||
|
|
|
@ -98,6 +98,11 @@ const EmojiPicker = {
|
||||||
required: false,
|
required: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
hideCustomEmoji: {
|
||||||
|
required: false,
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
|
@ -280,6 +285,9 @@ const EmojiPicker = {
|
||||||
return 0
|
return 0
|
||||||
},
|
},
|
||||||
allCustomGroups () {
|
allCustomGroups () {
|
||||||
|
if (this.hideCustomEmoji) {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
const emojis = this.$store.getters.groupedCustomEmojis
|
const emojis = this.$store.getters.groupedCustomEmojis
|
||||||
if (emojis.unpacked) {
|
if (emojis.unpacked) {
|
||||||
emojis.unpacked.text = this.$t('emoji.unpacked')
|
emojis.unpacked.text = this.$t('emoji.unpacked')
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
ref="popover"
|
ref="popover"
|
||||||
trigger="click"
|
trigger="click"
|
||||||
popover-class="emoji-picker popover-default"
|
popover-class="emoji-picker popover-default"
|
||||||
|
:trigger-attrs="{ 'aria-hidden': true }"
|
||||||
@show="onPopoverShown"
|
@show="onPopoverShown"
|
||||||
@close="onPopoverClosed"
|
@close="onPopoverClosed"
|
||||||
>
|
>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="EmojiReactions">
|
<div class="EmojiReactions">
|
||||||
<UserListPopover
|
<UserListPopover
|
||||||
v-for="(reaction) in emojiReactions"
|
v-for="(reaction) in emojiReactions"
|
||||||
:key="reaction.name"
|
:key="reaction.url || reaction.name"
|
||||||
:users="accountsForEmoji[reaction.name]"
|
:users="accountsForEmoji[reaction.name]"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
|
@ -11,7 +11,21 @@
|
||||||
@click="emojiOnClick(reaction.name, $event)"
|
@click="emojiOnClick(reaction.name, $event)"
|
||||||
@mouseenter="fetchEmojiReactionsByIfMissing()"
|
@mouseenter="fetchEmojiReactionsByIfMissing()"
|
||||||
>
|
>
|
||||||
<span class="reaction-emoji">{{ reaction.name }}</span>
|
<span
|
||||||
|
class="reaction-emoji"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
v-if="reaction.url"
|
||||||
|
:src="reaction.url"
|
||||||
|
:title="reaction.name"
|
||||||
|
class="reaction-emoji-content"
|
||||||
|
width="1em"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
v-else
|
||||||
|
class="reaction-emoji reaction-emoji-content"
|
||||||
|
>{{ reaction.name }}</span>
|
||||||
|
</span>
|
||||||
<span>{{ reaction.count }}</span>
|
<span>{{ reaction.count }}</span>
|
||||||
</button>
|
</button>
|
||||||
</UserListPopover>
|
</UserListPopover>
|
||||||
|
@ -35,6 +49,8 @@
|
||||||
margin-top: 0.25em;
|
margin-top: 0.25em;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
--emoji-size: calc(1.25em * var(--emojiReactionsScale, 1));
|
||||||
|
|
||||||
.emoji-reaction {
|
.emoji-reaction {
|
||||||
padding: 0 0.5em;
|
padding: 0 0.5em;
|
||||||
margin-right: 0.5em;
|
margin-right: 0.5em;
|
||||||
|
@ -45,8 +61,24 @@
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
.reaction-emoji {
|
.reaction-emoji {
|
||||||
width: 1.25em;
|
width: var(--emoji-size);
|
||||||
|
height: var(--emoji-size);
|
||||||
margin-right: 0.25em;
|
margin-right: 0.25em;
|
||||||
|
line-height: var(--emoji-size);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reaction-emoji-content {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
line-height: inherit;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: calc(var(--emoji-size) * 0.8);
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
|
|
|
@ -38,13 +38,20 @@
|
||||||
class="button-unstyled interactive"
|
class="button-unstyled interactive"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
role="button"
|
role="button"
|
||||||
|
:title="$t('tool_tip.favorite')"
|
||||||
:href="remoteInteractionLink"
|
:href="remoteInteractionLink"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FALayers class="fa-scale-110 fa-old-padding-layer">
|
||||||
class="fa-scale-110 fa-old-padding"
|
<FAIcon
|
||||||
:title="$t('tool_tip.favorite')"
|
class="fa-scale-110"
|
||||||
:icon="['far', 'star']"
|
:icon="['far', 'star']"
|
||||||
/>
|
/>
|
||||||
|
<FAIcon
|
||||||
|
class="focus-marker"
|
||||||
|
transform="shrink-6 up-9 right-12"
|
||||||
|
icon="plus"
|
||||||
|
/>
|
||||||
|
</FALayers>
|
||||||
</a>
|
</a>
|
||||||
<span
|
<span
|
||||||
v-if="!mergedConfig.hidePostStats && status.fave_num > 0"
|
v-if="!mergedConfig.hidePostStats && status.fave_num > 0"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
:class="{ custom: isCustom }"
|
:class="{ custom: isCustom }"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
|
:id="name + '-label'"
|
||||||
:for="preset === 'custom' ? name : name + '-font-switcher'"
|
:for="preset === 'custom' ? name : name + '-font-switcher'"
|
||||||
class="label"
|
class="label"
|
||||||
>
|
>
|
||||||
|
@ -12,7 +13,8 @@
|
||||||
<input
|
<input
|
||||||
v-if="typeof fallback !== 'undefined'"
|
v-if="typeof fallback !== 'undefined'"
|
||||||
:id="name + '-o'"
|
:id="name + '-o'"
|
||||||
class="opt exlcude-disabled"
|
:aria-labelledby="name + '-label'"
|
||||||
|
class="opt exlcude-disabled visible-for-screenreader-only"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:checked="present"
|
:checked="present"
|
||||||
@change="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
|
@change="$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)"
|
||||||
|
@ -21,6 +23,7 @@
|
||||||
v-if="typeof fallback !== 'undefined'"
|
v-if="typeof fallback !== 'undefined'"
|
||||||
class="opt-l"
|
class="opt-l"
|
||||||
:for="name + '-o'"
|
:for="name + '-o'"
|
||||||
|
:aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<Select
|
<Select
|
||||||
|
|
|
@ -80,3 +80,21 @@ export const ROOT_ITEMS = {
|
||||||
criteria: ['announcements']
|
criteria: ['announcements']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function routeTo (item, currentUser) {
|
||||||
|
if (!item.route && !item.routeObject) return null
|
||||||
|
|
||||||
|
let route
|
||||||
|
|
||||||
|
if (item.routeObject) {
|
||||||
|
route = item.routeObject
|
||||||
|
} else {
|
||||||
|
route = { name: (item.anon || currentUser) ? item.route : item.anonRoute }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (USERNAME_ROUTES.has(route.name)) {
|
||||||
|
route.params = { username: currentUser.screen_name, name: currentUser.screen_name }
|
||||||
|
}
|
||||||
|
|
||||||
|
return route
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'
|
import { routeTo } from 'src/components/navigation/navigation.js'
|
||||||
import OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'
|
import OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import { faThumbtack } from '@fortawesome/free-solid-svg-icons'
|
import { faThumbtack } from '@fortawesome/free-solid-svg-icons'
|
||||||
|
@ -26,17 +26,7 @@ const NavigationEntry = {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
routeTo () {
|
routeTo () {
|
||||||
if (!this.item.route && !this.item.routeObject) return null
|
return routeTo(this.item, this.currentUser)
|
||||||
let route
|
|
||||||
if (this.item.routeObject) {
|
|
||||||
route = this.item.routeObject
|
|
||||||
} else {
|
|
||||||
route = { name: (this.item.anon || this.currentUser) ? this.item.route : this.item.anonRoute }
|
|
||||||
}
|
|
||||||
if (USERNAME_ROUTES.has(route.name)) {
|
|
||||||
route.params = { username: this.currentUser.screen_name, name: this.currentUser.screen_name }
|
|
||||||
}
|
|
||||||
return route
|
|
||||||
},
|
},
|
||||||
getters () {
|
getters () {
|
||||||
return this.$store.getters
|
return this.$store.getters
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import { TIMELINES, ROOT_ITEMS, USERNAME_ROUTES } from 'src/components/navigation/navigation.js'
|
import { TIMELINES, ROOT_ITEMS, routeTo } from 'src/components/navigation/navigation.js'
|
||||||
import { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'
|
import { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'
|
||||||
|
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
|
@ -31,14 +31,7 @@ const NavPanel = {
|
||||||
props: ['limit'],
|
props: ['limit'],
|
||||||
methods: {
|
methods: {
|
||||||
getRouteTo (item) {
|
getRouteTo (item) {
|
||||||
if (item.routeObject) {
|
return routeTo(item, this.currentUser)
|
||||||
return item.routeObject
|
|
||||||
}
|
|
||||||
const route = { name: (item.anon || this.currentUser) ? item.route : item.anonRoute }
|
|
||||||
if (USERNAME_ROUTES.has(route.name)) {
|
|
||||||
route.params = { username: this.currentUser.screen_name }
|
|
||||||
}
|
|
||||||
return route
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
@ -121,7 +121,16 @@
|
||||||
scope="global"
|
scope="global"
|
||||||
keypath="notifications.reacted_with"
|
keypath="notifications.reacted_with"
|
||||||
>
|
>
|
||||||
<span class="emoji-reaction-emoji">{{ notification.emoji }}</span>
|
<img
|
||||||
|
v-if="notification.emoji_url"
|
||||||
|
class="emoji-reaction-emoji emoji-reaction-emoji-image"
|
||||||
|
:src="notification.emoji_url"
|
||||||
|
:name="notification.emoji"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
v-else
|
||||||
|
class="emoji-reaction-emoji"
|
||||||
|
>{{ notification.emoji }}</span>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
</small>
|
</small>
|
||||||
</span>
|
</span>
|
||||||
|
@ -153,9 +162,9 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
<button
|
<button
|
||||||
class="button-unstyled expand-icon"
|
class="button-unstyled expand-icon"
|
||||||
@click.prevent="toggleStatusExpanded"
|
|
||||||
:title="$t('tool_tip.toggle_expand')"
|
|
||||||
:aria-expanded="statusExpanded"
|
:aria-expanded="statusExpanded"
|
||||||
|
:title="$t('tool_tip.toggle_expand')"
|
||||||
|
@click.prevent="toggleStatusExpanded"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
class="fa-scale-110"
|
class="fa-scale-110"
|
||||||
|
|
|
@ -129,6 +129,13 @@
|
||||||
|
|
||||||
.emoji-reaction-emoji {
|
.emoji-reaction-emoji {
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
|
max-width: 1.25em;
|
||||||
|
height: 1.25em;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.emoji-reaction-emoji-image {
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification-details {
|
.notification-details {
|
||||||
|
|
|
@ -12,7 +12,8 @@ export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
choices: []
|
choices: [],
|
||||||
|
randomSeed: `${Math.random()}`.replace('.', '-')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
|
|
|
@ -4,53 +4,63 @@
|
||||||
:class="containerClass"
|
:class="containerClass"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-for="(option, index) in options"
|
:role="showResults ? 'section' : (poll.multiple ? 'group' : 'radiogroup')"
|
||||||
:key="index"
|
|
||||||
class="poll-option"
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-if="showResults"
|
v-for="(option, index) in options"
|
||||||
:title="resultTitle(option)"
|
:key="index"
|
||||||
class="option-result"
|
class="poll-option"
|
||||||
>
|
>
|
||||||
<div class="option-result-label">
|
<div
|
||||||
<span class="result-percentage">
|
v-if="showResults"
|
||||||
{{ percentageForOption(option.votes_count) }}%
|
:title="resultTitle(option)"
|
||||||
</span>
|
class="option-result"
|
||||||
<RichContent
|
>
|
||||||
:html="option.title_html"
|
<div class="option-result-label">
|
||||||
:handle-links="false"
|
<span class="result-percentage">
|
||||||
:emoji="emoji"
|
{{ percentageForOption(option.votes_count) }}%
|
||||||
|
</span>
|
||||||
|
<RichContent
|
||||||
|
:html="option.title_html"
|
||||||
|
:handle-links="false"
|
||||||
|
:emoji="emoji"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="result-fill"
|
||||||
|
:style="{ 'width': `${percentageForOption(option.votes_count)}%` }"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="result-fill"
|
|
||||||
:style="{ 'width': `${percentageForOption(option.votes_count)}%` }"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-else
|
|
||||||
@click="activateOption(index)"
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
v-if="poll.multiple"
|
|
||||||
type="checkbox"
|
|
||||||
:disabled="loading"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
v-else
|
v-else
|
||||||
type="radio"
|
tabindex="0"
|
||||||
:disabled="loading"
|
:role="poll.multiple ? 'checkbox' : 'radio'"
|
||||||
:value="index"
|
:aria-labelledby="`option-vote-${randomSeed}-${index}`"
|
||||||
|
:aria-checked="choices[index]"
|
||||||
|
@click="activateOption(index)"
|
||||||
>
|
>
|
||||||
<label class="option-vote">
|
<input
|
||||||
<RichContent
|
v-if="poll.multiple"
|
||||||
:html="option.title_html"
|
type="checkbox"
|
||||||
:handle-links="false"
|
class="poll-checkbox"
|
||||||
:emoji="emoji"
|
:disabled="loading"
|
||||||
/>
|
:value="index"
|
||||||
</label>
|
>
|
||||||
|
<input
|
||||||
|
v-else
|
||||||
|
type="radio"
|
||||||
|
:disabled="loading"
|
||||||
|
:value="index"
|
||||||
|
>
|
||||||
|
<label class="option-vote">
|
||||||
|
<RichContent
|
||||||
|
:id="`option-vote-${randomSeed}-${index}`"
|
||||||
|
:html="option.title_html"
|
||||||
|
:handle-links="false"
|
||||||
|
:emoji="emoji"
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer faint">
|
<div class="footer faint">
|
||||||
|
@ -161,5 +171,9 @@
|
||||||
padding: 0 0.5em;
|
padding: 0 0.5em;
|
||||||
margin-right: 0.5em;
|
margin-right: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.poll-checkbox {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -8,6 +8,7 @@ import Gallery from 'src/components/gallery/gallery.vue'
|
||||||
import StatusContent from '../status_content/status_content.vue'
|
import StatusContent from '../status_content/status_content.vue'
|
||||||
import fileTypeService from '../../services/file_type/file_type.service.js'
|
import fileTypeService from '../../services/file_type/file_type.service.js'
|
||||||
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
||||||
|
import { propsToNative } from '../../services/attributes_helper/attributes_helper.service.js'
|
||||||
import { reject, map, uniqBy, debounce } from 'lodash'
|
import { reject, map, uniqBy, debounce } from 'lodash'
|
||||||
import suggestor from '../emoji_input/suggestor.js'
|
import suggestor from '../emoji_input/suggestor.js'
|
||||||
import { mapGetters, mapState } from 'vuex'
|
import { mapGetters, mapState } from 'vuex'
|
||||||
|
@ -629,6 +630,9 @@ const PostStatusForm = {
|
||||||
},
|
},
|
||||||
openProfileTab () {
|
openProfileTab () {
|
||||||
this.$store.dispatch('openSettingsModalTab', 'profile')
|
this.$store.dispatch('openSettingsModalTab', 'profile')
|
||||||
|
},
|
||||||
|
propsToNative (props) {
|
||||||
|
return propsToNative(props)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,9 @@
|
||||||
<span>{{ $t('post_status.scope_notice.public') }}</span>
|
<span>{{ $t('post_status.scope_notice.public') }}</span>
|
||||||
<a
|
<a
|
||||||
class="fa-scale-110 fa-old-padding dismiss"
|
class="fa-scale-110 fa-old-padding dismiss"
|
||||||
|
:title="$t('post_status.scope_notice_dismiss')"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
@click.prevent="dismissScopeNotice()"
|
@click.prevent="dismissScopeNotice()"
|
||||||
>
|
>
|
||||||
<FAIcon icon="times" />
|
<FAIcon icon="times" />
|
||||||
|
@ -42,6 +45,9 @@
|
||||||
<span>{{ $t('post_status.scope_notice.unlisted') }}</span>
|
<span>{{ $t('post_status.scope_notice.unlisted') }}</span>
|
||||||
<a
|
<a
|
||||||
class="fa-scale-110 fa-old-padding dismiss"
|
class="fa-scale-110 fa-old-padding dismiss"
|
||||||
|
:title="$t('post_status.scope_notice_dismiss')"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
@click.prevent="dismissScopeNotice()"
|
@click.prevent="dismissScopeNotice()"
|
||||||
>
|
>
|
||||||
<FAIcon icon="times" />
|
<FAIcon icon="times" />
|
||||||
|
@ -54,6 +60,9 @@
|
||||||
<span>{{ $t('post_status.scope_notice.private') }}</span>
|
<span>{{ $t('post_status.scope_notice.private') }}</span>
|
||||||
<a
|
<a
|
||||||
class="fa-scale-110 fa-old-padding dismiss"
|
class="fa-scale-110 fa-old-padding dismiss"
|
||||||
|
:title="$t('post_status.scope_notice_dismiss')"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
@click.prevent="dismissScopeNotice()"
|
@click.prevent="dismissScopeNotice()"
|
||||||
>
|
>
|
||||||
<FAIcon icon="times" />
|
<FAIcon icon="times" />
|
||||||
|
@ -124,14 +133,17 @@
|
||||||
:suggest="emojiSuggestor"
|
:suggest="emojiSuggestor"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
>
|
>
|
||||||
<input
|
<template #default="inputProps">
|
||||||
v-model="newStatus.spoilerText"
|
<input
|
||||||
type="text"
|
v-model="newStatus.spoilerText"
|
||||||
:placeholder="$t('post_status.content_warning')"
|
type="text"
|
||||||
:disabled="posting && !optimisticPosting"
|
:placeholder="$t('post_status.content_warning')"
|
||||||
size="1"
|
:disabled="posting && !optimisticPosting"
|
||||||
class="form-post-subject"
|
v-bind="propsToNative(inputProps)"
|
||||||
>
|
size="1"
|
||||||
|
class="form-post-subject"
|
||||||
|
>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<EmojiInput
|
<EmojiInput
|
||||||
ref="emoji-input"
|
ref="emoji-input"
|
||||||
|
@ -148,29 +160,32 @@
|
||||||
@sticker-upload-failed="uploadFailed"
|
@sticker-upload-failed="uploadFailed"
|
||||||
@shown="handleEmojiInputShow"
|
@shown="handleEmojiInputShow"
|
||||||
>
|
>
|
||||||
<textarea
|
<template #default="inputProps">
|
||||||
ref="textarea"
|
<textarea
|
||||||
v-model="newStatus.status"
|
ref="textarea"
|
||||||
:placeholder="placeholder || $t('post_status.default')"
|
v-model="newStatus.status"
|
||||||
rows="1"
|
:placeholder="placeholder || $t('post_status.default')"
|
||||||
cols="1"
|
rows="1"
|
||||||
:disabled="posting && !optimisticPosting"
|
cols="1"
|
||||||
class="form-post-body"
|
:disabled="posting && !optimisticPosting"
|
||||||
:class="{ 'scrollable-form': !!maxHeight }"
|
class="form-post-body"
|
||||||
@keydown.exact.enter="submitOnEnter && postStatus($event, newStatus)"
|
:class="{ 'scrollable-form': !!maxHeight }"
|
||||||
@keydown.meta.enter="postStatus($event, newStatus)"
|
v-bind="propsToNative(inputProps)"
|
||||||
@keydown.ctrl.enter="!submitOnEnter && postStatus($event, newStatus)"
|
@keydown.exact.enter="submitOnEnter && postStatus($event, newStatus)"
|
||||||
@input="resize"
|
@keydown.meta.enter="postStatus($event, newStatus)"
|
||||||
@compositionupdate="resize"
|
@keydown.ctrl.enter="!submitOnEnter && postStatus($event, newStatus)"
|
||||||
@paste="paste"
|
@input="resize"
|
||||||
/>
|
@compositionupdate="resize"
|
||||||
<p
|
@paste="paste"
|
||||||
v-if="hasStatusLengthLimit"
|
/>
|
||||||
class="character-counter faint"
|
<p
|
||||||
:class="{ error: isOverLengthLimit }"
|
v-if="hasStatusLengthLimit"
|
||||||
>
|
class="character-counter faint"
|
||||||
{{ charactersLeft }}
|
:class="{ error: isOverLengthLimit }"
|
||||||
</p>
|
>
|
||||||
|
{{ charactersLeft }}
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<div
|
<div
|
||||||
v-if="!disableScopeSelector"
|
v-if="!disableScopeSelector"
|
||||||
|
@ -193,6 +208,7 @@
|
||||||
id="post-content-type"
|
id="post-content-type"
|
||||||
v-model="newStatus.contentType"
|
v-model="newStatus.contentType"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
:attrs="{ 'aria-label': $t('post_status.content_type_selection') }"
|
||||||
>
|
>
|
||||||
<option
|
<option
|
||||||
v-for="postFormat in postFormats"
|
v-for="postFormat in postFormats"
|
||||||
|
@ -265,12 +281,10 @@
|
||||||
>
|
>
|
||||||
{{ $t('post_status.post') }}
|
{{ $t('post_status.post') }}
|
||||||
</button>
|
</button>
|
||||||
<!-- touchstart is used to keep the OSK at the same position after a message send -->
|
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
:disabled="uploadingFiles || disableSubmit"
|
:disabled="uploadingFiles || disableSubmit"
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
@touchstart.stop.prevent="postStatus($event, newStatus)"
|
|
||||||
@click.stop.prevent="postStatus($event, newStatus)"
|
@click.stop.prevent="postStatus($event, newStatus)"
|
||||||
>
|
>
|
||||||
{{ $t('post_status.post') }}
|
{{ $t('post_status.post') }}
|
||||||
|
|
|
@ -6,36 +6,51 @@
|
||||||
:trigger-attrs="{ title: $t('timeline.quick_filter_settings') }"
|
:trigger-attrs="{ title: $t('timeline.quick_filter_settings') }"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div
|
||||||
<div v-if="loggedIn">
|
class="dropdown-menu"
|
||||||
|
role="menu"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="loggedIn"
|
||||||
|
role="group"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
v-if="!conversation"
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
:aria-checked="replyVisibilityAll"
|
||||||
|
role="menuitemradio"
|
||||||
@click="replyVisibilityAll = true"
|
@click="replyVisibilityAll = true"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox -radio"
|
class="menu-checkbox -radio"
|
||||||
:class="{ 'menu-checkbox-checked': replyVisibilityAll }"
|
:class="{ 'menu-checkbox-checked': replyVisibilityAll }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.reply_visibility_all') }}
|
/>{{ $t('settings.reply_visibility_all') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="!conversation"
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
:aria-checked="replyVisibilityFollowing"
|
||||||
|
role="menuitemradio"
|
||||||
@click="replyVisibilityFollowing = true"
|
@click="replyVisibilityFollowing = true"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox -radio"
|
class="menu-checkbox -radio"
|
||||||
:class="{ 'menu-checkbox-checked': replyVisibilityFollowing }"
|
:class="{ 'menu-checkbox-checked': replyVisibilityFollowing }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.reply_visibility_following_short') }}
|
/>{{ $t('settings.reply_visibility_following_short') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="!conversation"
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
:aria-checked="replyVisibilitySelf"
|
||||||
|
role="menuitemradio"
|
||||||
@click="replyVisibilitySelf = true"
|
@click="replyVisibilitySelf = true"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox -radio"
|
class="menu-checkbox -radio"
|
||||||
:class="{ 'menu-checkbox-checked': replyVisibilitySelf }"
|
:class="{ 'menu-checkbox-checked': replyVisibilitySelf }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.reply_visibility_self_short') }}
|
/>{{ $t('settings.reply_visibility_self_short') }}
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div
|
||||||
|
@ -46,33 +61,43 @@
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="muteBotStatuses"
|
||||||
@click="muteBotStatuses = !muteBotStatuses"
|
@click="muteBotStatuses = !muteBotStatuses"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': muteBotStatuses }"
|
:class="{ 'menu-checkbox-checked': muteBotStatuses }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.mute_bot_posts') }}
|
/>{{ $t('settings.mute_bot_posts') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="hideMedia"
|
||||||
@click="hideMedia = !hideMedia"
|
@click="hideMedia = !hideMedia"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': hideMedia }"
|
:class="{ 'menu-checkbox-checked': hideMedia }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.hide_media_previews') }}
|
/>{{ $t('settings.hide_media_previews') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="hideMutedPosts"
|
||||||
@click="hideMutedPosts = !hideMutedPosts"
|
@click="hideMutedPosts = !hideMutedPosts"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': hideMutedPosts }"
|
:class="{ 'menu-checkbox-checked': hideMutedPosts }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.hide_all_muted_posts') }}
|
/>{{ $t('settings.hide_all_muted_posts') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item dropdown-item-icon"
|
class="button-default dropdown-item dropdown-item-icon"
|
||||||
|
role="menuitem"
|
||||||
@click="openTab('filtering')"
|
@click="openTab('filtering')"
|
||||||
>
|
>
|
||||||
<FAIcon icon="font" />{{ $t('settings.word_filter_and_more') }}
|
<FAIcon icon="font" />{{ $t('settings.word_filter_and_more') }}
|
||||||
|
|
|
@ -6,60 +6,87 @@
|
||||||
:trigger-attrs="{ title: $t('timeline.quick_view_settings') }"
|
:trigger-attrs="{ title: $t('timeline.quick_view_settings') }"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div
|
||||||
<button
|
class="dropdown-menu"
|
||||||
class="button-default dropdown-item"
|
role="menu"
|
||||||
@click="conversationDisplay = 'tree'"
|
>
|
||||||
>
|
<div role="group">
|
||||||
<span
|
<button
|
||||||
class="menu-checkbox -radio"
|
class="button-default dropdown-item"
|
||||||
:class="{ 'menu-checkbox-checked': conversationDisplay === 'tree' }"
|
:aria-checked="conversationDisplay === 'tree'"
|
||||||
/><FAIcon icon="folder-tree" /> {{ $t('settings.conversation_display_tree_quick') }}
|
role="menuitemradio"
|
||||||
</button>
|
@click="conversationDisplay = 'tree'"
|
||||||
<button
|
>
|
||||||
class="button-default dropdown-item"
|
<span
|
||||||
@click="conversationDisplay = 'linear'"
|
class="menu-checkbox -radio"
|
||||||
>
|
:aria-hidden="true"
|
||||||
<span
|
:class="{ 'menu-checkbox-checked': conversationDisplay === 'tree' }"
|
||||||
class="menu-checkbox -radio"
|
/><FAIcon
|
||||||
:class="{ 'menu-checkbox-checked': conversationDisplay === 'linear' }"
|
icon="folder-tree"
|
||||||
/><FAIcon icon="list" /> {{ $t('settings.conversation_display_linear_quick') }}
|
:aria-hidden="true"
|
||||||
</button>
|
/> {{ $t('settings.conversation_display_tree_quick') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
:aria-checked="conversationDisplay === 'linear'"
|
||||||
|
role="menuitemradio"
|
||||||
|
@click="conversationDisplay = 'linear'"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox -radio"
|
||||||
|
:class="{ 'menu-checkbox-checked': conversationDisplay === 'linear' }"
|
||||||
|
:aria-hidden="true"
|
||||||
|
/><FAIcon
|
||||||
|
icon="list"
|
||||||
|
:aria-hidden="true"
|
||||||
|
/> {{ $t('settings.conversation_display_linear_quick') }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
role="separator"
|
role="separator"
|
||||||
class="dropdown-divider"
|
class="dropdown-divider"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="showUserAvatars"
|
||||||
@click="showUserAvatars = !showUserAvatars"
|
@click="showUserAvatars = !showUserAvatars"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': showUserAvatars }"
|
:class="{ 'menu-checkbox-checked': showUserAvatars }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.mention_link_show_avatar_quick') }}
|
/>{{ $t('settings.mention_link_show_avatar_quick') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="!conversation"
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="autoUpdate"
|
||||||
@click="autoUpdate = !autoUpdate"
|
@click="autoUpdate = !autoUpdate"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': autoUpdate }"
|
:class="{ 'menu-checkbox-checked': autoUpdate }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.auto_update') }}
|
/>{{ $t('settings.auto_update') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="!conversation"
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
|
role="menuitemcheckbox"
|
||||||
|
:aria-checked="collapseWithSubjects"
|
||||||
@click="collapseWithSubjects = !collapseWithSubjects"
|
@click="collapseWithSubjects = !collapseWithSubjects"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="menu-checkbox"
|
class="menu-checkbox"
|
||||||
:class="{ 'menu-checkbox-checked': collapseWithSubjects }"
|
:class="{ 'menu-checkbox-checked': collapseWithSubjects }"
|
||||||
|
:aria-hidden="true"
|
||||||
/>{{ $t('settings.collapse_subject') }}
|
/>{{ $t('settings.collapse_subject') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="button-default dropdown-item dropdown-item-icon"
|
class="button-default dropdown-item dropdown-item-icon"
|
||||||
|
role="menuitem"
|
||||||
@click="openTab('general')"
|
@click="openTab('general')"
|
||||||
>
|
>
|
||||||
<FAIcon icon="wrench" />{{ $t('settings.more_settings') }}
|
<FAIcon icon="wrench" />{{ $t('settings.more_settings') }}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
:class="{ disabled: !present || disabled }"
|
:class="{ disabled: !present || disabled }"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
|
:id="name + '-label'"
|
||||||
:for="name"
|
:for="name"
|
||||||
class="label"
|
class="label"
|
||||||
>
|
>
|
||||||
|
@ -12,7 +13,8 @@
|
||||||
<input
|
<input
|
||||||
v-if="typeof fallback !== 'undefined'"
|
v-if="typeof fallback !== 'undefined'"
|
||||||
:id="name + '-o'"
|
:id="name + '-o'"
|
||||||
class="opt"
|
:aria-labelledby="name + '-label'"
|
||||||
|
class="opt visible-for-screenreader-only"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:checked="present"
|
:checked="present"
|
||||||
@change="$emit('update:modelValue', !present ? fallback : undefined)"
|
@change="$emit('update:modelValue', !present ? fallback : undefined)"
|
||||||
|
@ -21,6 +23,7 @@
|
||||||
v-if="typeof fallback !== 'undefined'"
|
v-if="typeof fallback !== 'undefined'"
|
||||||
class="opt-l"
|
class="opt-l"
|
||||||
:for="name + '-o'"
|
:for="name + '-o'"
|
||||||
|
:aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
<input
|
<input
|
||||||
:id="name"
|
:id="name"
|
||||||
|
@ -34,9 +37,10 @@
|
||||||
@input="$emit('update:modelValue', $event.target.value)"
|
@input="$emit('update:modelValue', $event.target.value)"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
:id="name"
|
:id="name + '-numeric'"
|
||||||
class="input-number"
|
class="input-number"
|
||||||
type="number"
|
type="number"
|
||||||
|
:aria-labelledby="name + '-label'"
|
||||||
:value="modelValue || fallback"
|
:value="modelValue || fallback"
|
||||||
:disabled="!present || disabled"
|
:disabled="!present || disabled"
|
||||||
:max="hardMax"
|
:max="hardMax"
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import Popover from '../popover/popover.vue'
|
import Popover from '../popover/popover.vue'
|
||||||
import { ensureFinalFallback } from '../../i18n/languages.js'
|
import EmojiPicker from '../emoji_picker/emoji_picker.vue'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'
|
import { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'
|
||||||
import { faSmileBeam } from '@fortawesome/free-regular-svg-icons'
|
import { faSmileBeam } from '@fortawesome/free-regular-svg-icons'
|
||||||
import { trim } from 'lodash'
|
|
||||||
|
|
||||||
library.add(
|
library.add(
|
||||||
faPlus,
|
faPlus,
|
||||||
|
@ -20,105 +19,34 @@ const ReactButton = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Popover
|
Popover,
|
||||||
|
EmojiPicker
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
addReaction (event, emoji, close) {
|
addReaction (event) {
|
||||||
|
const emoji = event.insertion
|
||||||
const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)
|
const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)
|
||||||
if (existingReaction && existingReaction.me) {
|
if (existingReaction && existingReaction.me) {
|
||||||
this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })
|
this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })
|
||||||
} else {
|
} else {
|
||||||
this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })
|
this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })
|
||||||
}
|
}
|
||||||
close()
|
},
|
||||||
|
show () {
|
||||||
|
if (!this.expanded) {
|
||||||
|
this.$refs.picker.showPicker()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onShow () {
|
onShow () {
|
||||||
this.expanded = true
|
this.expanded = true
|
||||||
this.focusInput()
|
|
||||||
},
|
},
|
||||||
onClose () {
|
onClose () {
|
||||||
this.expanded = false
|
this.expanded = false
|
||||||
},
|
|
||||||
focusInput () {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
const input = document.querySelector('.reaction-picker-filter > input')
|
|
||||||
if (input) input.focus()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// Vaguely adjusted copypaste from emoji_input and emoji_picker!
|
|
||||||
maybeLocalizedEmojiNamesAndKeywords (emoji) {
|
|
||||||
const names = [emoji.displayText]
|
|
||||||
const keywords = []
|
|
||||||
|
|
||||||
if (emoji.displayTextI18n) {
|
|
||||||
names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emoji.annotations) {
|
|
||||||
this.languages.forEach(lang => {
|
|
||||||
names.push(emoji.annotations[lang]?.name)
|
|
||||||
|
|
||||||
keywords.push(...(emoji.annotations[lang]?.keywords || []))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
names: names.filter(k => k),
|
|
||||||
keywords: keywords.filter(k => k)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
maybeLocalizedEmojiName (emoji) {
|
|
||||||
if (!emoji.annotations) {
|
|
||||||
return emoji.displayText
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emoji.displayTextI18n) {
|
|
||||||
return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const lang of this.languages) {
|
|
||||||
if (emoji.annotations[lang]?.name) {
|
|
||||||
return emoji.annotations[lang].name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return emoji.displayText
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
commonEmojis () {
|
hideCustomEmoji () {
|
||||||
const hardcodedSet = new Set(['👍', '😠', '👀', '😂', '🔥'])
|
return !this.$store.state.instance.pleromaChatMessagesAvailable
|
||||||
return this.$store.getters.standardEmojiList.filter(emoji => hardcodedSet.has(emoji.replacement))
|
|
||||||
},
|
|
||||||
languages () {
|
|
||||||
return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)
|
|
||||||
},
|
|
||||||
emojis () {
|
|
||||||
if (this.filterWord !== '') {
|
|
||||||
const keywordLowercase = trim(this.filterWord.toLowerCase())
|
|
||||||
|
|
||||||
const orderedEmojiList = []
|
|
||||||
for (const emoji of this.$store.getters.standardEmojiList) {
|
|
||||||
const indices = this.maybeLocalizedEmojiNamesAndKeywords(emoji)
|
|
||||||
.keywords
|
|
||||||
.map(k => k.toLowerCase().indexOf(keywordLowercase))
|
|
||||||
.filter(k => k > -1)
|
|
||||||
|
|
||||||
const indexOfKeyword = indices.length ? Math.min(...indices) : -1
|
|
||||||
|
|
||||||
if (indexOfKeyword > -1) {
|
|
||||||
if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {
|
|
||||||
orderedEmojiList[indexOfKeyword] = []
|
|
||||||
}
|
|
||||||
orderedEmojiList[indexOfKeyword].push(emoji)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return orderedEmojiList.flat()
|
|
||||||
}
|
|
||||||
return this.$store.getters.standardEmojiList || []
|
|
||||||
},
|
|
||||||
mergedConfig () {
|
|
||||||
return this.$store.getters.mergedConfig
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,73 +1,39 @@
|
||||||
<template>
|
<template>
|
||||||
<Popover
|
<span class="ReactButton">
|
||||||
trigger="click"
|
<EmojiPicker
|
||||||
class="ReactButton"
|
ref="picker"
|
||||||
placement="top"
|
:enable-sticker-picker="enableStickerPicker"
|
||||||
:offset="{ y: 5 }"
|
:hide-custom-emoji="hideCustomEmoji"
|
||||||
:bound-to="{ x: 'container' }"
|
class="emoji-picker-panel"
|
||||||
remove-padding
|
@emoji="addReaction"
|
||||||
popover-class="ReactButton popover-default"
|
@show="onShow"
|
||||||
@show="onShow"
|
@close="onClose"
|
||||||
@close="onClose"
|
/>
|
||||||
>
|
<span
|
||||||
<template #content="{close}">
|
class="button-unstyled popover-trigger"
|
||||||
<div class="reaction-picker-filter">
|
:title="$t('tool_tip.add_reaction')"
|
||||||
<input
|
@click.stop.prevent="show"
|
||||||
v-model="filterWord"
|
>
|
||||||
size="1"
|
<FALayers>
|
||||||
:placeholder="$t('emoji.search_emoji')"
|
<FAIcon
|
||||||
@input="$event.target.composing = false"
|
class="fa-scale-110 fa-old-padding"
|
||||||
>
|
:icon="['far', 'smile-beam']"
|
||||||
</div>
|
/>
|
||||||
<div class="reaction-picker">
|
<FAIcon
|
||||||
<span
|
v-show="!expanded"
|
||||||
v-for="emoji in commonEmojis"
|
class="focus-marker"
|
||||||
:key="emoji.replacement"
|
transform="shrink-6 up-9 right-17"
|
||||||
class="emoji-button"
|
icon="plus"
|
||||||
:title="maybeLocalizedEmojiName(emoji)"
|
/>
|
||||||
@click="addReaction($event, emoji.replacement, close)"
|
<FAIcon
|
||||||
>
|
v-show="expanded"
|
||||||
{{ emoji.replacement }}
|
class="focus-marker"
|
||||||
</span>
|
transform="shrink-6 up-9 right-17"
|
||||||
<div class="reaction-picker-divider" />
|
icon="times"
|
||||||
<span
|
/>
|
||||||
v-for="(emoji, key) in emojis"
|
</FALayers>
|
||||||
:key="key"
|
</span>
|
||||||
class="emoji-button"
|
</span>
|
||||||
:title="maybeLocalizedEmojiName(emoji)"
|
|
||||||
@click="addReaction($event, emoji.replacement, close)"
|
|
||||||
>
|
|
||||||
{{ emoji.replacement }}
|
|
||||||
</span>
|
|
||||||
<div class="reaction-bottom-fader" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<template #trigger>
|
|
||||||
<span
|
|
||||||
class="button-unstyled popover-trigger"
|
|
||||||
:title="$t('tool_tip.add_reaction')"
|
|
||||||
>
|
|
||||||
<FALayers>
|
|
||||||
<FAIcon
|
|
||||||
class="fa-scale-110 fa-old-padding"
|
|
||||||
:icon="['far', 'smile-beam']"
|
|
||||||
/>
|
|
||||||
<FAIcon
|
|
||||||
v-show="!expanded"
|
|
||||||
class="focus-marker"
|
|
||||||
transform="shrink-6 up-9 right-17"
|
|
||||||
icon="plus"
|
|
||||||
/>
|
|
||||||
<FAIcon
|
|
||||||
v-show="expanded"
|
|
||||||
class="focus-marker"
|
|
||||||
transform="shrink-6 up-9 right-17"
|
|
||||||
icon="times"
|
|
||||||
/>
|
|
||||||
</FALayers>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</Popover>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./react_button.js"></script>
|
<script src="./react_button.js"></script>
|
||||||
|
@ -135,11 +101,6 @@
|
||||||
color: $fallback--text;
|
color: $fallback--text;
|
||||||
color: var(--text, $fallback--text);
|
color: var(--text, $fallback--text);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.popover-trigger-button {
|
|
||||||
/* override of popover internal stuff */
|
|
||||||
width: auto;
|
|
||||||
|
|
||||||
@include unfocused-style {
|
@include unfocused-style {
|
||||||
.focus-marker {
|
.focus-marker {
|
||||||
|
|
|
@ -16,7 +16,7 @@ const registration = {
|
||||||
confirm: '',
|
confirm: '',
|
||||||
birthday: '',
|
birthday: '',
|
||||||
reason: '',
|
reason: '',
|
||||||
language: ''
|
language: ['']
|
||||||
},
|
},
|
||||||
captcha: {}
|
captcha: {}
|
||||||
}),
|
}),
|
||||||
|
@ -100,7 +100,7 @@ const registration = {
|
||||||
this.user.captcha_token = this.captcha.token
|
this.user.captcha_token = this.captcha.token
|
||||||
this.user.captcha_answer_data = this.captcha.answer_data
|
this.user.captcha_answer_data = this.captcha.answer_data
|
||||||
if (this.user.language) {
|
if (this.user.language) {
|
||||||
this.user.language = localeService.internalToBackendLocale(this.user.language)
|
this.user.language = localeService.internalToBackendLocaleMulti(this.user.language.filter(k => k))
|
||||||
}
|
}
|
||||||
|
|
||||||
this.v$.$touch()
|
this.v$.$touch()
|
||||||
|
|
|
@ -210,6 +210,7 @@
|
||||||
:prompt-text="$t('registration.email_language')"
|
:prompt-text="$t('registration.email_language')"
|
||||||
:language="v$.user.language.$model"
|
:language="v$.user.language.$model"
|
||||||
:set-language="val => v$.user.language.$model = val"
|
:set-language="val => v$.user.language.$model = val"
|
||||||
|
@click.stop.prevent
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -32,12 +32,20 @@
|
||||||
target="_blank"
|
target="_blank"
|
||||||
role="button"
|
role="button"
|
||||||
:href="remoteInteractionLink"
|
:href="remoteInteractionLink"
|
||||||
|
:title="$t('tool_tip.reply')"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FALayers class="fa-old-padding-layer">
|
||||||
icon="reply"
|
<FAIcon
|
||||||
class="fa-scale-110 fa-old-padding"
|
class="fa-scale-110"
|
||||||
:title="$t('tool_tip.reply')"
|
icon="reply"
|
||||||
/>
|
/>
|
||||||
|
<FAIcon
|
||||||
|
v-if="!replying"
|
||||||
|
class="focus-marker"
|
||||||
|
transform="shrink-6 up-8 right-16"
|
||||||
|
icon="plus"
|
||||||
|
/>
|
||||||
|
</FALayers>
|
||||||
</a>
|
</a>
|
||||||
<span
|
<span
|
||||||
v-if="status.replies_count > 0"
|
v-if="status.replies_count > 0"
|
||||||
|
|
|
@ -45,13 +45,20 @@
|
||||||
class="button-unstyled interactive"
|
class="button-unstyled interactive"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
role="button"
|
role="button"
|
||||||
|
:title="$t('tool_tip.repeat')"
|
||||||
:href="remoteInteractionLink"
|
:href="remoteInteractionLink"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FALayers class="fa-old-padding-layer">
|
||||||
class="fa-scale-110 fa-old-padding"
|
<FAIcon
|
||||||
icon="retweet"
|
class="fa-scale-110"
|
||||||
:title="$t('tool_tip.repeat')"
|
icon="retweet"
|
||||||
/>
|
/>
|
||||||
|
<FAIcon
|
||||||
|
class="focus-marker"
|
||||||
|
transform="shrink-6 up-9 right-12"
|
||||||
|
icon="plus"
|
||||||
|
/>
|
||||||
|
</FALayers>
|
||||||
</a>
|
</a>
|
||||||
<span
|
<span
|
||||||
v-if="!mergedConfig.hidePostStats && status.repeat_num > 0"
|
v-if="!mergedConfig.hidePostStats && status.repeat_num > 0"
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
const ScreenReaderNotice = {
|
||||||
|
props: {
|
||||||
|
ariaLive: {
|
||||||
|
type: String,
|
||||||
|
defualt: 'assertive'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
currentText: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
announce (text) {
|
||||||
|
this.currentText = text
|
||||||
|
setTimeout(() => { this.currentText = '' }, 1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ScreenReaderNotice
|
|
@ -0,0 +1,10 @@
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="visible-for-screenreader-only"
|
||||||
|
:aria-live="ariaLive"
|
||||||
|
>
|
||||||
|
{{ currentText }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script src="./screen_reader_notice.js"></script>
|
|
@ -8,6 +8,7 @@
|
||||||
class="button-unstyled nav-icon"
|
class="button-unstyled nav-icon"
|
||||||
:title="$t('nav.search')"
|
:title="$t('nav.search')"
|
||||||
type="button"
|
type="button"
|
||||||
|
:aria-expanded="!hidden"
|
||||||
@click.prevent.stop="toggleHidden"
|
@click.prevent.stop="toggleHidden"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
<button
|
<button
|
||||||
class="button-default search-button"
|
class="button-default search-button"
|
||||||
type="submit"
|
type="submit"
|
||||||
|
:title="$t('nav.search')"
|
||||||
@click="find(searchTerm)"
|
@click="find(searchTerm)"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
|
@ -39,6 +41,8 @@
|
||||||
<button
|
<button
|
||||||
class="button-unstyled cancel-search"
|
class="button-unstyled cancel-search"
|
||||||
type="button"
|
type="button"
|
||||||
|
:title="$t('nav.search_close')"
|
||||||
|
:aria-expanded="!hidden"
|
||||||
@click.prevent.stop="toggleHidden"
|
@click.prevent.stop="toggleHidden"
|
||||||
>
|
>
|
||||||
<FAIcon
|
<FAIcon
|
||||||
|
|
|
@ -13,6 +13,7 @@ export default {
|
||||||
'modelValue',
|
'modelValue',
|
||||||
'disabled',
|
'disabled',
|
||||||
'unstyled',
|
'unstyled',
|
||||||
'kind'
|
'kind',
|
||||||
|
'attrs'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<select
|
<select
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:value="modelValue"
|
:value="modelValue"
|
||||||
|
v-bind="attrs"
|
||||||
@change="$emit('update:modelValue', $event.target.value)"
|
@change="$emit('update:modelValue', $event.target.value)"
|
||||||
>
|
>
|
||||||
<slot />
|
<slot />
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<template>
|
||||||
|
<NumberSetting
|
||||||
|
v-bind="$attrs"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</NumberSetting>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import NumberSetting from './number_setting.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
NumberSetting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -1,27 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<span
|
<NumberSetting
|
||||||
v-if="matchesExpertLevel"
|
v-bind="$attrs"
|
||||||
class="IntegerSetting"
|
truncate="1"
|
||||||
>
|
>
|
||||||
<label :for="path">
|
<slot />
|
||||||
<slot />
|
</NumberSetting>
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
:id="path"
|
|
||||||
class="number-input"
|
|
||||||
type="number"
|
|
||||||
step="1"
|
|
||||||
:disabled="disabled"
|
|
||||||
:min="min || 0"
|
|
||||||
:value="state"
|
|
||||||
@change="update"
|
|
||||||
>
|
|
||||||
{{ ' ' }}
|
|
||||||
<ModifiedIndicator
|
|
||||||
:changed="isChanged"
|
|
||||||
:onclick="reset"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./integer_setting.js"></script>
|
<script>
|
||||||
|
import NumberSetting from './number_setting.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
NumberSetting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
|
@ -5,12 +5,12 @@
|
||||||
>
|
>
|
||||||
<Popover
|
<Popover
|
||||||
trigger="hover"
|
trigger="hover"
|
||||||
|
:trigger-attrs="{ 'aria-label': $t('settings.setting_changed') }"
|
||||||
>
|
>
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
|
|
||||||
<FAIcon
|
<FAIcon
|
||||||
icon="wrench"
|
icon="wrench"
|
||||||
:aria-label="$t('settings.setting_changed')"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #content>
|
<template #content>
|
||||||
|
|
|
@ -8,6 +8,8 @@ export default {
|
||||||
path: String,
|
path: String,
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
min: Number,
|
min: Number,
|
||||||
|
step: Number,
|
||||||
|
truncate: Number,
|
||||||
expert: [Number, String]
|
expert: [Number, String]
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -15,8 +17,11 @@ export default {
|
||||||
const [firstSegment, ...rest] = this.path.split('.')
|
const [firstSegment, ...rest] = this.path.split('.')
|
||||||
return [firstSegment + 'DefaultValue', ...rest].join('.')
|
return [firstSegment + 'DefaultValue', ...rest].join('.')
|
||||||
},
|
},
|
||||||
|
parent () {
|
||||||
|
return this.$parent.$parent
|
||||||
|
},
|
||||||
state () {
|
state () {
|
||||||
const value = get(this.$parent, this.path)
|
const value = get(this.parent, this.path)
|
||||||
if (value === undefined) {
|
if (value === undefined) {
|
||||||
return this.defaultState
|
return this.defaultState
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,21 +29,28 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
defaultState () {
|
defaultState () {
|
||||||
return get(this.$parent, this.pathDefault)
|
return get(this.parent, this.pathDefault)
|
||||||
},
|
},
|
||||||
isChanged () {
|
isChanged () {
|
||||||
return this.state !== this.defaultState
|
return this.state !== this.defaultState
|
||||||
},
|
},
|
||||||
matchesExpertLevel () {
|
matchesExpertLevel () {
|
||||||
return (this.expert || 0) <= this.$parent.expertLevel
|
return (this.expert || 0) <= this.parent.expertLevel
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
truncateValue (value) {
|
||||||
|
if (!this.truncate) {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
return Math.trunc(value / this.truncate) * this.truncate
|
||||||
|
},
|
||||||
update (e) {
|
update (e) {
|
||||||
set(this.$parent, this.path, parseInt(e.target.value))
|
set(this.parent, this.path, this.truncateValue(parseFloat(e.target.value)))
|
||||||
},
|
},
|
||||||
reset () {
|
reset () {
|
||||||
set(this.$parent, this.path, this.defaultState)
|
set(this.parent, this.path, this.defaultState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
<template>
|
||||||
|
<span
|
||||||
|
v-if="matchesExpertLevel"
|
||||||
|
class="NumberSetting"
|
||||||
|
>
|
||||||
|
<label :for="path">
|
||||||
|
<slot />
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
:id="path"
|
||||||
|
class="number-input"
|
||||||
|
type="number"
|
||||||
|
:step="step || 1"
|
||||||
|
:disabled="disabled"
|
||||||
|
:min="min || 0"
|
||||||
|
:value="state"
|
||||||
|
@change="update"
|
||||||
|
>
|
||||||
|
{{ ' ' }}
|
||||||
|
<ModifiedIndicator
|
||||||
|
:changed="isChanged"
|
||||||
|
:onclick="reset"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script src="./number_setting.js"></script>
|
|
@ -2,6 +2,7 @@ import BooleanSetting from '../helpers/boolean_setting.vue'
|
||||||
import ChoiceSetting from '../helpers/choice_setting.vue'
|
import ChoiceSetting from '../helpers/choice_setting.vue'
|
||||||
import ScopeSelector from 'src/components/scope_selector/scope_selector.vue'
|
import ScopeSelector from 'src/components/scope_selector/scope_selector.vue'
|
||||||
import IntegerSetting from '../helpers/integer_setting.vue'
|
import IntegerSetting from '../helpers/integer_setting.vue'
|
||||||
|
import FloatSetting from '../helpers/float_setting.vue'
|
||||||
import SizeSetting, { defaultHorizontalUnits } from '../helpers/size_setting.vue'
|
import SizeSetting, { defaultHorizontalUnits } from '../helpers/size_setting.vue'
|
||||||
import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'
|
import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'
|
||||||
|
|
||||||
|
@ -62,6 +63,7 @@ const GeneralTab = {
|
||||||
BooleanSetting,
|
BooleanSetting,
|
||||||
ChoiceSetting,
|
ChoiceSetting,
|
||||||
IntegerSetting,
|
IntegerSetting,
|
||||||
|
FloatSetting,
|
||||||
SizeSetting,
|
SizeSetting,
|
||||||
InterfaceLanguageSwitcher,
|
InterfaceLanguageSwitcher,
|
||||||
ScopeSelector,
|
ScopeSelector,
|
||||||
|
|
|
@ -271,6 +271,15 @@
|
||||||
{{ $t('settings.no_rich_text_description') }}
|
{{ $t('settings.no_rich_text_description') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<FloatSetting
|
||||||
|
v-if="user"
|
||||||
|
path="emojiReactionsScale"
|
||||||
|
expert="1"
|
||||||
|
>
|
||||||
|
{{ $t('settings.emoji_reactions_scale') }}
|
||||||
|
</FloatSetting>
|
||||||
|
</li>
|
||||||
<h3>{{ $t('settings.attachments') }}</h3>
|
<h3>{{ $t('settings.attachments') }}</h3>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting
|
<BooleanSetting
|
||||||
|
@ -501,6 +510,14 @@
|
||||||
{{ $t('settings.pad_emoji') }}
|
{{ $t('settings.pad_emoji') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<BooleanSetting
|
||||||
|
path="autocompleteSelect"
|
||||||
|
expert="1"
|
||||||
|
>
|
||||||
|
{{ $t('settings.autocomplete_select_first') }}
|
||||||
|
</BooleanSetting>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,6 +12,7 @@ import InterfaceLanguageSwitcher from 'src/components/interface_language_switche
|
||||||
import BooleanSetting from '../helpers/boolean_setting.vue'
|
import BooleanSetting from '../helpers/boolean_setting.vue'
|
||||||
import SharedComputedObject from '../helpers/shared_computed_object.js'
|
import SharedComputedObject from '../helpers/shared_computed_object.js'
|
||||||
import localeService from 'src/services/locale/locale.service.js'
|
import localeService from 'src/services/locale/locale.service.js'
|
||||||
|
import { propsToNative } from 'src/services/attributes_helper/attributes_helper.service.js'
|
||||||
|
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import {
|
import {
|
||||||
|
@ -261,6 +262,9 @@ const ProfileTab = {
|
||||||
messageArgs: [error.message],
|
messageArgs: [error.message],
|
||||||
level: 'error'
|
level: 'error'
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
propsToNative (props) {
|
||||||
|
return propsToNative(props)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,14 @@
|
||||||
enable-emoji-picker
|
enable-emoji-picker
|
||||||
:suggest="emojiSuggestor"
|
:suggest="emojiSuggestor"
|
||||||
>
|
>
|
||||||
<input
|
<template #default="inputProps">
|
||||||
id="username"
|
<input
|
||||||
v-model="newName"
|
id="username"
|
||||||
class="name-changer"
|
v-model="newName"
|
||||||
>
|
class="name-changer"
|
||||||
|
v-bind="propsToNative(inputProps)"
|
||||||
|
>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<p>{{ $t('settings.bio') }}</p>
|
<p>{{ $t('settings.bio') }}</p>
|
||||||
<EmojiInput
|
<EmojiInput
|
||||||
|
@ -20,10 +23,13 @@
|
||||||
enable-emoji-picker
|
enable-emoji-picker
|
||||||
:suggest="emojiUserSuggestor"
|
:suggest="emojiUserSuggestor"
|
||||||
>
|
>
|
||||||
<textarea
|
<template #default="inputProps">
|
||||||
v-model="newBio"
|
<textarea
|
||||||
class="bio resize-height"
|
v-model="newBio"
|
||||||
/>
|
class="bio resize-height"
|
||||||
|
v-bind="propsToNative(inputProps)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<p v-if="role === 'admin' || role === 'moderator'">
|
<p v-if="role === 'admin' || role === 'moderator'">
|
||||||
<Checkbox v-model="showRole">
|
<Checkbox v-model="showRole">
|
||||||
|
@ -60,10 +66,13 @@
|
||||||
hide-emoji-button
|
hide-emoji-button
|
||||||
:suggest="userSuggestor"
|
:suggest="userSuggestor"
|
||||||
>
|
>
|
||||||
<input
|
<template #default="inputProps">
|
||||||
v-model="newFields[i].name"
|
<input
|
||||||
:placeholder="$t('settings.profile_fields.name')"
|
v-model="newFields[i].name"
|
||||||
>
|
:placeholder="$t('settings.profile_fields.name')"
|
||||||
|
v-bind="propsToNative(inputProps)"
|
||||||
|
>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<EmojiInput
|
<EmojiInput
|
||||||
v-model="newFields[i].value"
|
v-model="newFields[i].value"
|
||||||
|
@ -71,10 +80,13 @@
|
||||||
hide-emoji-button
|
hide-emoji-button
|
||||||
:suggest="userSuggestor"
|
:suggest="userSuggestor"
|
||||||
>
|
>
|
||||||
<input
|
<template #default="inputProps">
|
||||||
v-model="newFields[i].value"
|
<input
|
||||||
:placeholder="$t('settings.profile_fields.value')"
|
v-model="newFields[i].value"
|
||||||
>
|
:placeholder="$t('settings.profile_fields.value')"
|
||||||
|
v-bind="propsToNative(inputProps)"
|
||||||
|
>
|
||||||
|
</template>
|
||||||
</EmojiInput>
|
</EmojiInput>
|
||||||
<button
|
<button
|
||||||
class="delete-field button-unstyled -hover-highlight"
|
class="delete-field button-unstyled -hover-highlight"
|
||||||
|
|
|
@ -129,12 +129,13 @@
|
||||||
v-model="selected.inset"
|
v-model="selected.inset"
|
||||||
:disabled="!present"
|
:disabled="!present"
|
||||||
name="inset"
|
name="inset"
|
||||||
class="input-inset"
|
class="input-inset visible-for-screenreader-only"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="checkbox-label"
|
class="checkbox-label"
|
||||||
for="inset"
|
for="inset"
|
||||||
|
:aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -117,6 +117,7 @@ export default {
|
||||||
onClick={this.clickTab(index)}
|
onClick={this.clickTab(index)}
|
||||||
class={classesTab.join(' ')}
|
class={classesTab.join(' ')}
|
||||||
type="button"
|
type="button"
|
||||||
|
role="tab"
|
||||||
>
|
>
|
||||||
<img src={props.image} title={props['image-tooltip']}/>
|
<img src={props.image} title={props['image-tooltip']}/>
|
||||||
{props.label ? '' : props.label}
|
{props.label ? '' : props.label}
|
||||||
|
@ -131,6 +132,7 @@ export default {
|
||||||
onClick={this.clickTab(index)}
|
onClick={this.clickTab(index)}
|
||||||
class={classesTab.join(' ')}
|
class={classesTab.join(' ')}
|
||||||
type="button"
|
type="button"
|
||||||
|
role="tab"
|
||||||
>
|
>
|
||||||
{!props.icon ? '' : (<FAIcon class="tab-icon" size="2x" fixed-width icon={props.icon}/>)}
|
{!props.icon ? '' : (<FAIcon class="tab-icon" size="2x" fixed-width icon={props.icon}/>)}
|
||||||
<span class="text">
|
<span class="text">
|
||||||
|
@ -167,11 +169,15 @@ export default {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>
|
<div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>
|
||||||
<div class="tabs">
|
<div
|
||||||
|
class="tabs"
|
||||||
|
role="tablist"
|
||||||
|
>
|
||||||
{tabs}
|
{tabs}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
ref="contents"
|
ref="contents"
|
||||||
|
role="tabpanel"
|
||||||
class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}
|
class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}
|
||||||
v-body-scroll-lock={this.bodyScrollLock}
|
v-body-scroll-lock={this.bodyScrollLock}
|
||||||
>
|
>
|
||||||
|
|
|
@ -176,6 +176,7 @@
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Bookmarks",
|
||||||
"user_search": "User Search",
|
"user_search": "User Search",
|
||||||
"search": "Search",
|
"search": "Search",
|
||||||
|
"search_close": "Close search bar",
|
||||||
"who_to_follow": "Who to follow",
|
"who_to_follow": "Who to follow",
|
||||||
"preferences": "Preferences",
|
"preferences": "Preferences",
|
||||||
"timelines": "Timelines",
|
"timelines": "Timelines",
|
||||||
|
@ -270,6 +271,7 @@
|
||||||
"text/markdown": "Markdown",
|
"text/markdown": "Markdown",
|
||||||
"text/bbcode": "BBCode"
|
"text/bbcode": "BBCode"
|
||||||
},
|
},
|
||||||
|
"content_type_selection": "Post format",
|
||||||
"content_warning": "Subject (optional)",
|
"content_warning": "Subject (optional)",
|
||||||
"default": "Just got exiled to Nusakambangan",
|
"default": "Just got exiled to Nusakambangan",
|
||||||
"direct_warning_to_all": "This post will be visible to all the mentioned users.",
|
"direct_warning_to_all": "This post will be visible to all the mentioned users.",
|
||||||
|
@ -287,6 +289,7 @@
|
||||||
"private": "This post will be visible to your followers only",
|
"private": "This post will be visible to your followers only",
|
||||||
"unlisted": "This post will not be visible in Public Timeline and The Whole Known Network"
|
"unlisted": "This post will not be visible in Public Timeline and The Whole Known Network"
|
||||||
},
|
},
|
||||||
|
"scope_notice_dismiss": "Close this notice",
|
||||||
"scope": {
|
"scope": {
|
||||||
"direct": "Direct - post to mentioned users only",
|
"direct": "Direct - post to mentioned users only",
|
||||||
"private": "Followers-only - post to followers only",
|
"private": "Followers-only - post to followers only",
|
||||||
|
@ -462,7 +465,9 @@
|
||||||
"domain_mutes": "Domains",
|
"domain_mutes": "Domains",
|
||||||
"avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
|
"avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
|
||||||
"pad_emoji": "Pad emoji with spaces when adding from picker",
|
"pad_emoji": "Pad emoji with spaces when adding from picker",
|
||||||
|
"autocomplete_select_first": "Automatically select the first candidate when autocomplete results are available",
|
||||||
"emoji_reactions_on_timeline": "Show emoji reactions on timeline",
|
"emoji_reactions_on_timeline": "Show emoji reactions on timeline",
|
||||||
|
"emoji_reactions_scale": "Reactions scale factor",
|
||||||
"export_theme": "Save preset",
|
"export_theme": "Save preset",
|
||||||
"filtering": "Filtering",
|
"filtering": "Filtering",
|
||||||
"wordfilter": "Wordfilter",
|
"wordfilter": "Wordfilter",
|
||||||
|
@ -1055,7 +1060,8 @@
|
||||||
"reject_follow_request": "Reject follow request",
|
"reject_follow_request": "Reject follow request",
|
||||||
"bookmark": "Bookmark",
|
"bookmark": "Bookmark",
|
||||||
"toggle_expand": "Expand or collapse notification to show post in full",
|
"toggle_expand": "Expand or collapse notification to show post in full",
|
||||||
"toggle_mute": "Expand or collapse notification to reveal muted content"
|
"toggle_mute": "Expand or collapse notification to reveal muted content",
|
||||||
|
"autocomplete_available": "{number} result is available. Use up and down keys to navigate through them. | {number} results are available. Use up and down keys to navigate through them."
|
||||||
},
|
},
|
||||||
"upload": {
|
"upload": {
|
||||||
"error": {
|
"error": {
|
||||||
|
|
ファイル差分が大きすぎるため省略します
差分を読み込み
ファイル差分が大きすぎるため省略します
差分を読み込み
ファイル差分が大きすぎるため省略します
差分を読み込み
|
@ -0,0 +1,905 @@
|
||||||
|
{
|
||||||
|
"emoji": {
|
||||||
|
"unicode": "統一碼繪文字",
|
||||||
|
"custom": "自定義繪文字",
|
||||||
|
"add_emoji": "插入繪文字",
|
||||||
|
"search_emoji": "搜索繪文字",
|
||||||
|
"keep_open": "選擇器保持打開",
|
||||||
|
"emoji": "繪文字",
|
||||||
|
"stickers": "貼紙",
|
||||||
|
"load_all": "加載所有繪文字(共 {emojiAmount} 個)",
|
||||||
|
"load_all_hint": "最先加載的 {saneAmount} ,加載全部繪文字可能會帶來性能問題。"
|
||||||
|
},
|
||||||
|
"polls": {
|
||||||
|
"not_enough_options": "投票的選項太少",
|
||||||
|
"expired": "投票 {0} 前已結束",
|
||||||
|
"expires_in": "投票於 {0} 內結束",
|
||||||
|
"expiry": "投票期限",
|
||||||
|
"multiple_choices": "多選",
|
||||||
|
"single_choice": "單選",
|
||||||
|
"type": "問卷類型",
|
||||||
|
"vote": "投票",
|
||||||
|
"votes": "票",
|
||||||
|
"option": "選項",
|
||||||
|
"add_option": "增加選項",
|
||||||
|
"add_poll": "增加投票",
|
||||||
|
"votes_count": "{count} 票 | {count} 票",
|
||||||
|
"people_voted_count": "{count} 人已投票 | {count} 人已投票"
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"reacted_with": "作出了 {0} 的反應",
|
||||||
|
"migrated_to": "遷移到",
|
||||||
|
"no_more_notifications": "沒有更多的通知",
|
||||||
|
"repeated_you": "轉發了你的發文",
|
||||||
|
"read": "已閱!",
|
||||||
|
"notifications": "通知",
|
||||||
|
"load_older": "載入更早的通知",
|
||||||
|
"follow_request": "想要關注你",
|
||||||
|
"followed_you": "關注了你",
|
||||||
|
"favorited_you": "喜歡了你的發文",
|
||||||
|
"broken_favorite": "未知的狀態,正在搜索中…",
|
||||||
|
"error": "獲取通知錯誤:{0}"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"chats": "聊天",
|
||||||
|
"timelines": "時間線",
|
||||||
|
"preferences": "偏好設置",
|
||||||
|
"who_to_follow": "推薦關注",
|
||||||
|
"search": "搜索",
|
||||||
|
"user_search": "用戶搜索",
|
||||||
|
"bookmarks": "書籤",
|
||||||
|
"twkn": "已知網絡",
|
||||||
|
"timeline": "時間線",
|
||||||
|
"public_tl": "公共時間線",
|
||||||
|
"dms": "私信",
|
||||||
|
"interactions": "互動",
|
||||||
|
"mentions": "提及",
|
||||||
|
"friend_requests": "關注請求",
|
||||||
|
"back": "後退",
|
||||||
|
"administration": "管理員",
|
||||||
|
"about": "關於",
|
||||||
|
"home_timeline": "家時間線"
|
||||||
|
},
|
||||||
|
"media_modal": {
|
||||||
|
"next": "往後",
|
||||||
|
"previous": "往前"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"heading": {
|
||||||
|
"recovery": "雙重因素恢復",
|
||||||
|
"totp": "雙重因素驗證"
|
||||||
|
},
|
||||||
|
"recovery_code": "恢復碼",
|
||||||
|
"enter_two_factor_code": "輸入一個雙重因素驗證碼",
|
||||||
|
"enter_recovery_code": "輸入一個恢復碼",
|
||||||
|
"authentication_code": "驗證碼",
|
||||||
|
"hint": "登錄後加入討論",
|
||||||
|
"username": "用戶名",
|
||||||
|
"register": "註冊",
|
||||||
|
"placeholder": "例:鈴音",
|
||||||
|
"password": "密碼",
|
||||||
|
"logout": "登出",
|
||||||
|
"description": "用 OAuth 登入",
|
||||||
|
"login": "登入"
|
||||||
|
},
|
||||||
|
"importer": {
|
||||||
|
"error": "導入此文件時出現一個錯誤。",
|
||||||
|
"success": "導入成功。",
|
||||||
|
"submit": "提交"
|
||||||
|
},
|
||||||
|
"image_cropper": {
|
||||||
|
"cancel": "取消",
|
||||||
|
"save_without_cropping": "保存不裁剪",
|
||||||
|
"save": "保存",
|
||||||
|
"crop_picture": "裁剪圖片"
|
||||||
|
},
|
||||||
|
"general": {
|
||||||
|
"peek": "窺視",
|
||||||
|
"close": "關閉",
|
||||||
|
"verify": "驗證",
|
||||||
|
"confirm": "確認",
|
||||||
|
"enable": "啟用",
|
||||||
|
"disable": "禁用",
|
||||||
|
"cancel": "取消",
|
||||||
|
"dismiss": "忽略",
|
||||||
|
"show_less": "收起",
|
||||||
|
"show_more": "展開",
|
||||||
|
"optional": "可選",
|
||||||
|
"retry": "再試",
|
||||||
|
"error_retry": "請再試",
|
||||||
|
"generic_error": "發生一個錯誤",
|
||||||
|
"loading": "載入中…",
|
||||||
|
"more": "更多",
|
||||||
|
"submit": "提交",
|
||||||
|
"apply": "應用",
|
||||||
|
"role": {
|
||||||
|
"moderator": "審查者",
|
||||||
|
"admin": "管理員"
|
||||||
|
},
|
||||||
|
"flash_content": "點擊以使用 Ruffle 顯示 Flash 內容(實驗性,可能無效)。",
|
||||||
|
"flash_security": "請注意,這可能有潜在的危險,因為Flash內容仍然是武斷的程式碼。",
|
||||||
|
"flash_fail": "無法加載flash內容,請參閱控制台瞭解詳細資訊。",
|
||||||
|
"no": "否",
|
||||||
|
"generic_error_message": "發生了一個錯誤: {0}",
|
||||||
|
"never_show_again": "不再顯示",
|
||||||
|
"yes": "是",
|
||||||
|
"undo": "復原",
|
||||||
|
"scroll_to_top": "滾動至頂部",
|
||||||
|
"pin": "置頂",
|
||||||
|
"scope_in_timeline": {
|
||||||
|
"private": "僅關注者"
|
||||||
|
},
|
||||||
|
"unpin": "停止置頂"
|
||||||
|
},
|
||||||
|
"finder": {
|
||||||
|
"find_user": "尋找用戶",
|
||||||
|
"error_fetching_user": "獲取用戶時發生錯誤"
|
||||||
|
},
|
||||||
|
"features_panel": {
|
||||||
|
"who_to_follow": "推薦關注",
|
||||||
|
"title": "特色",
|
||||||
|
"text_limit": "文字數量限制",
|
||||||
|
"scope_options": "可見範圍設置",
|
||||||
|
"media_proxy": "媒體代理",
|
||||||
|
"pleroma_chat_messages": "Pleroma 聊天",
|
||||||
|
"chat": "聊天",
|
||||||
|
"gopher": "Gopher",
|
||||||
|
"upload_limit": "上傳限制",
|
||||||
|
"shout": "留言板"
|
||||||
|
},
|
||||||
|
"exporter": {
|
||||||
|
"processing": "正在處理,稍後會提示您下載文件",
|
||||||
|
"export": "導出"
|
||||||
|
},
|
||||||
|
"domain_mute_card": {
|
||||||
|
"unmute_progress": "取消靜音中…",
|
||||||
|
"unmute": "取消靜音",
|
||||||
|
"mute_progress": "靜音中…",
|
||||||
|
"mute": "靜音"
|
||||||
|
},
|
||||||
|
"shoutbox": {
|
||||||
|
"title": "留言板"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"staff": "職員",
|
||||||
|
"mrf": {
|
||||||
|
"simple": {
|
||||||
|
"media_nsfw_desc": "這個實例強迫以下實例的帖子媒體設定為敏感:",
|
||||||
|
"media_nsfw": "媒體強制設定為敏感",
|
||||||
|
"media_removal_desc": "這個實例移除以下實例的帖子媒體:",
|
||||||
|
"media_removal": "移除媒體",
|
||||||
|
"ftl_removal_desc": "這個實例在所有已知網絡中移除下列實例:",
|
||||||
|
"ftl_removal": "從所有已知網路中移除",
|
||||||
|
"quarantine_desc": "本實例只會把公開發文發送到下列實例:",
|
||||||
|
"quarantine": "隔離",
|
||||||
|
"reject_desc": "本實例不會接收來自下列實例的消息:",
|
||||||
|
"reject": "拒絕",
|
||||||
|
"accept_desc": "本實例只接收來自下列實例的消息:",
|
||||||
|
"simple_policies": "站規",
|
||||||
|
"accept": "接受",
|
||||||
|
"instance": "實例",
|
||||||
|
"reason": "原因",
|
||||||
|
"not_applicable": "N/A"
|
||||||
|
},
|
||||||
|
"mrf_policies_desc": "MRF 策略會影響本實例的互通行為。以下策略已啟用:",
|
||||||
|
"keyword": {
|
||||||
|
"ftl_removal": "從「全部已知網絡」時間線上移除",
|
||||||
|
"replace": "取代",
|
||||||
|
"reject": "拒絕",
|
||||||
|
"is_replaced_by": "→",
|
||||||
|
"keyword_policies": "關鍵字政策"
|
||||||
|
},
|
||||||
|
"mrf_policies": "已啟用的MRF政策",
|
||||||
|
"federation": "聯邦"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"style": {
|
||||||
|
"common": {
|
||||||
|
"color": "顏色",
|
||||||
|
"contrast": {
|
||||||
|
"context": {
|
||||||
|
"18pt": "大字文本 (18pt+)",
|
||||||
|
"text": "文本"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"aaa": "符合 AAA 等級準則(推薦)",
|
||||||
|
"aa": "符合 AA 等級準則(最低)",
|
||||||
|
"bad": "不符合任何輔助功能指南"
|
||||||
|
},
|
||||||
|
"hint": "對比度是 {ratio}, 它 {level} {context}"
|
||||||
|
},
|
||||||
|
"opacity": "透明度"
|
||||||
|
},
|
||||||
|
"advanced_colors": {
|
||||||
|
"faint_text": "灰度文字",
|
||||||
|
"alert_error": "錯誤",
|
||||||
|
"badge_notification": "通知",
|
||||||
|
"alert": "提醒或警告背景色",
|
||||||
|
"_tab_label": "高级",
|
||||||
|
"alert_warning": "警告",
|
||||||
|
"alert_neutral": "中性",
|
||||||
|
"post": "帖子/用戶簡介",
|
||||||
|
"badge": "徽章背景",
|
||||||
|
"popover": "提示框,菜單,彈出框",
|
||||||
|
"panel_header": "面板標題",
|
||||||
|
"top_bar": "頂欄",
|
||||||
|
"borders": "邊框",
|
||||||
|
"buttons": "按鈕",
|
||||||
|
"inputs": "輸入框",
|
||||||
|
"underlay": "底襯",
|
||||||
|
"poll": "投票統計圖",
|
||||||
|
"icons": "圖標",
|
||||||
|
"highlight": "強調元素",
|
||||||
|
"pressed": "按下",
|
||||||
|
"selectedPost": "選中的帖子",
|
||||||
|
"selectedMenu": "選中的菜單項",
|
||||||
|
"disabled": "關閉",
|
||||||
|
"toggled": "切換",
|
||||||
|
"tabs": "標籤",
|
||||||
|
"chat": {
|
||||||
|
"incoming": "收到",
|
||||||
|
"outgoing": "發出",
|
||||||
|
"border": "邊框"
|
||||||
|
},
|
||||||
|
"wallpaper": "桌布"
|
||||||
|
},
|
||||||
|
"preview": {
|
||||||
|
"header_faint": "這很正常",
|
||||||
|
"header": "預覽",
|
||||||
|
"content": "內容",
|
||||||
|
"error": "例子錯誤",
|
||||||
|
"button": "按鈕",
|
||||||
|
"text": "有堆 {0} 和 {1}",
|
||||||
|
"mono": "內容",
|
||||||
|
"input": "剛剛抵達洛杉磯.",
|
||||||
|
"faint_link": "有用的手冊",
|
||||||
|
"fine_print": "閱讀我們的 {0} ,然而什麼有用的也學不到!",
|
||||||
|
"checkbox": "我已經瀏覽了條款及細則",
|
||||||
|
"link": "一個很好的小鏈接"
|
||||||
|
},
|
||||||
|
"shadows": {
|
||||||
|
"override": "覆寫",
|
||||||
|
"_tab_label": "陰影和燈光",
|
||||||
|
"component": "組件",
|
||||||
|
"shadow_id": "陰影 #{value}",
|
||||||
|
"blur": "模糊",
|
||||||
|
"spread": "擴散",
|
||||||
|
"inset": "插圖",
|
||||||
|
"hintV3": "對於陰影,您還可以使用{0}表示法來使用其他顏色插槽。",
|
||||||
|
"filter_hint": {
|
||||||
|
"always_drop_shadow": "警告,此陰影設置會總是使用 {0} ,如果瀏覽器支持的話。",
|
||||||
|
"drop_shadow_syntax": "{0} 不支持參數 {1} 和關鍵詞 {2} 。",
|
||||||
|
"avatar_inset": "請注意組合兩個內部和非內部的陰影到頭像上,在透明頭像上可能會有意料之外的效果。",
|
||||||
|
"spread_zero": "陰影的擴散 > 0 會同設置成零一樣",
|
||||||
|
"inset_classic": "插入內部的陰影會使用 {0}"
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"panel": "面板",
|
||||||
|
"panelHeader": "面板標題",
|
||||||
|
"topBar": "頂欄",
|
||||||
|
"avatar": "用戶頭像(在個人資料欄)",
|
||||||
|
"avatarStatus": "用戶頭像(在帖子顯示欄)",
|
||||||
|
"popup": "彈窗和工具提示",
|
||||||
|
"button": "按鈕",
|
||||||
|
"buttonHover": "按鈕(懸停)",
|
||||||
|
"buttonPressed": "按鈕(按下)",
|
||||||
|
"buttonPressedHover": "按鈕(按下和懸停)",
|
||||||
|
"input": "輸入框"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"switcher": {
|
||||||
|
"use_snapshot": "舊版",
|
||||||
|
"load_theme": "載入主題",
|
||||||
|
"keep_color": "保留顏色",
|
||||||
|
"keep_shadows": "保留陰影",
|
||||||
|
"keep_opacity": "保留透明度",
|
||||||
|
"keep_roundness": "保留圓角",
|
||||||
|
"help": {
|
||||||
|
"migration_napshot_gone": "不知出於何種原因,主題快照缺失了,一些地方可能與您印象中的不符。",
|
||||||
|
"snapshot_source_mismatch": "版本衝突:很有可能是 FE 版本回滾後再次升級了,如果您使用舊版本的 FE 更改了主題那麼您可能需要使用舊版本,否則請使用新版本。",
|
||||||
|
"future_version_imported": "您導入的文件來自更高版本的 FE。",
|
||||||
|
"older_version_imported": "您導入的文件來自舊版本的 FE。",
|
||||||
|
"snapshot_missing": "在文件中沒有主題快照,所以網站外觀可能會與原來預想的不同。",
|
||||||
|
"fe_upgraded": "PleromaFE 的主題引擎隨著版本更新升級了。",
|
||||||
|
"fe_downgraded": "PleromaFE 的版本回滾了。",
|
||||||
|
"upgraded_from_v2": "PleromaFE 已升級,主題會和你記憶中的不太一樣。",
|
||||||
|
"v2_imported": "您導入的文件是舊版 FE 的。我們儘可能保持兼容性,但還是可能出現不一致的情況。",
|
||||||
|
"snapshot_present": "載入快照已加載,因此所有值均被覆蓋。 您可以改為載入主題實際數據。",
|
||||||
|
"migration_snapshot_ok": "為保萬無一失,載入了主題快照。您可以試著載入主題數據。"
|
||||||
|
},
|
||||||
|
"use_source": "新版本",
|
||||||
|
"keep_as_is": "保持原狀",
|
||||||
|
"clear_opacity": "清除透明度",
|
||||||
|
"clear_all": "清除全部",
|
||||||
|
"reset": "重置",
|
||||||
|
"keep_fonts": "保留字體",
|
||||||
|
"save_load_hint": "\"保留\" 選項在選擇或載入主題時保留當前設置的選項,在導出主題時還會存儲上述選項。當所有複選框未設置時,導出主題將保存所有內容。"
|
||||||
|
},
|
||||||
|
"fonts": {
|
||||||
|
"components": {
|
||||||
|
"interface": "界面",
|
||||||
|
"input": "輸入框",
|
||||||
|
"post": "發帖文字",
|
||||||
|
"postCode": "帖子中使用等間距文字(富文本)"
|
||||||
|
},
|
||||||
|
"_tab_label": "字體",
|
||||||
|
"help": "給用戶界面的元素選擇字體。選擇 “自選”的你必須輸入確切的字體名稱。",
|
||||||
|
"family": "字體名稱",
|
||||||
|
"size": "大小 (像素)",
|
||||||
|
"weight": "字重 (粗體))",
|
||||||
|
"custom": "自選"
|
||||||
|
},
|
||||||
|
"common_colors": {
|
||||||
|
"foreground_hint": "點擊”高級“ 標籤進行細緻的控制",
|
||||||
|
"main": "常用顏色",
|
||||||
|
"_tab_label": "共同",
|
||||||
|
"rgbo": "圖標,強調,徽章"
|
||||||
|
},
|
||||||
|
"radii": {
|
||||||
|
"_tab_label": "圓角"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification_setting_block_from_strangers": "屏蔽來自你沒有關注的用戶的通知",
|
||||||
|
"user_mutes": "用户",
|
||||||
|
"hide_followers_count_description": "不顯示關注者數量",
|
||||||
|
"no_rich_text_description": "不顯示富文本格式",
|
||||||
|
"notification_visibility_moves": "用戶遷移",
|
||||||
|
"notification_visibility_repeats": "轉發",
|
||||||
|
"notification_visibility_mentions": "提及",
|
||||||
|
"notification_visibility_likes": "喜歡",
|
||||||
|
"interfaceLanguage": "界面語言",
|
||||||
|
"instance_default": "(默認:{value})",
|
||||||
|
"inputRadius": "輸入框",
|
||||||
|
"import_theme": "導入預置主題",
|
||||||
|
"import_followers_from_a_csv_file": "從 csv 文件中導入關注",
|
||||||
|
"import_blocks_from_a_csv_file": "從 csv 文件中導入封鎖黑名單名單",
|
||||||
|
"hide_filtered_statuses": "隱藏過濾的發文",
|
||||||
|
"lock_account_description": "你需要手動審核關注請求",
|
||||||
|
"loop_video": "循環視頻",
|
||||||
|
"loop_video_silent_only": "只循環沒有聲音的視頻(例如:Mastodon 裡的“GIF”)",
|
||||||
|
"mutes_tab": "靜音",
|
||||||
|
"play_videos_in_modal": "在彈出框內播放視頻",
|
||||||
|
"profile_fields": {
|
||||||
|
"add_field": "添加字段",
|
||||||
|
"name": "標籤",
|
||||||
|
"value": "內容",
|
||||||
|
"label": "個人資料元數據"
|
||||||
|
},
|
||||||
|
"use_contain_fit": "生成縮略圖時不要裁剪附件",
|
||||||
|
"notification_visibility": "要顯示的通知類型",
|
||||||
|
"notification_visibility_follows": "關注",
|
||||||
|
"new_email": "新電郵",
|
||||||
|
"subject_line_mastodon": "比如mastodon: copy as is",
|
||||||
|
"reset_background_confirm": "您確定要重置個人資料背景圖嗎?",
|
||||||
|
"reset_banner_confirm": "您確定要重置橫幅圖片嗎?",
|
||||||
|
"reset_avatar_confirm": "您確定要重置頭像嗎?",
|
||||||
|
"reset_profile_banner": "重置橫幅圖片",
|
||||||
|
"reset_profile_background": "重置個人資料背景圖",
|
||||||
|
"reset_avatar": "重置頭像",
|
||||||
|
"discoverable": "允許通過搜索檢索等服務找到此賬號",
|
||||||
|
"delete_account_error": "刪除賬戶時發生錯誤,如果一直刪除不了,請聯繫實例管理員。",
|
||||||
|
"composing": "寫作設置",
|
||||||
|
"chatMessageRadius": "聊天訊息",
|
||||||
|
"mfa": {
|
||||||
|
"confirm_and_enable": "確認並啟用OTP",
|
||||||
|
"setup_otp": "設置OTP",
|
||||||
|
"otp": "OTP",
|
||||||
|
"wait_pre_setup_otp": "預設OTP",
|
||||||
|
"verify": {
|
||||||
|
"desc": "要啟用雙因素驗證,請把你的雙因素驗證 app 裡的數字輸入:"
|
||||||
|
},
|
||||||
|
"scan": {
|
||||||
|
"secret_code": "密鑰",
|
||||||
|
"desc": "使用你的雙因素驗證 app,掃瞄這個二維碼,或者輸入這些文字密鑰:",
|
||||||
|
"title": "掃瞄"
|
||||||
|
},
|
||||||
|
"authentication_methods": "身份驗證方法",
|
||||||
|
"recovery_codes_warning": "抄寫這些號碼,或者保存在安全的地方。這些號碼不會再次顯示。如果你無法訪問你的 2FA app,也丟失了你的恢復碼,你的賬號就再也無法登錄了。",
|
||||||
|
"waiting_a_recovery_codes": "正在接收備份碼…",
|
||||||
|
"recovery_codes": "恢復碼。",
|
||||||
|
"warning_of_generate_new_codes": "當你生成新的恢復碼時,你的舊恢復碼就失效了。",
|
||||||
|
"generate_new_recovery_codes": "生成新的恢復碼",
|
||||||
|
"title": "雙因素驗證"
|
||||||
|
},
|
||||||
|
"new_password": "新密碼",
|
||||||
|
"name_bio": "名字及簡介",
|
||||||
|
"name": "名字",
|
||||||
|
"domain_mutes": "域名",
|
||||||
|
"delete_account_instructions": "在下面輸入密碼,以確認刪除帳戶。",
|
||||||
|
"delete_account_description": "永久刪除你的帳號和所有數據。",
|
||||||
|
"delete_account": "刪除帳戶",
|
||||||
|
"default_vis": "默認可見性範圍",
|
||||||
|
"data_import_export_tab": "數據導入/導出",
|
||||||
|
"mutes_and_blocks": "靜音與封鎖",
|
||||||
|
"current_password": "當前密碼",
|
||||||
|
"confirm_new_password": "確認新密碼",
|
||||||
|
"collapse_subject": "摺疊帶標題的內容",
|
||||||
|
"checkboxRadius": "複選框",
|
||||||
|
"instance_default_simple": "(默認)",
|
||||||
|
"interface": "界面",
|
||||||
|
"invalid_theme_imported": "您所選擇的主題文件不被 Pleroma 支持,因此主題未被修改。",
|
||||||
|
"limited_availability": "在您的瀏覽器中無法使用",
|
||||||
|
"links": "鏈接",
|
||||||
|
"changed_password": "成功修改了密碼!",
|
||||||
|
"change_password_error": "修改密碼的時候出了點問題。",
|
||||||
|
"change_password": "修改密碼",
|
||||||
|
"changed_email": "郵箱修改成功!",
|
||||||
|
"bot": "這是一個機器人賬號",
|
||||||
|
"change_email": "修改電子郵箱",
|
||||||
|
"cRed": "紅色(取消)",
|
||||||
|
"cOrange": "橙色(收藏)",
|
||||||
|
"cGreen": "綠色(轉發)",
|
||||||
|
"cBlue": "藍色(回覆,關注)",
|
||||||
|
"btnRadius": "按鈕",
|
||||||
|
"notification_visibility_emoji_reactions": "互動",
|
||||||
|
"no_blocks": "沒有封鎖",
|
||||||
|
"no_mutes": "沒有靜音",
|
||||||
|
"hide_follows_description": "不要顯示我所關注的人",
|
||||||
|
"hide_followers_description": "不要顯示關注我的人",
|
||||||
|
"hide_follows_count_description": "不顯示關注數",
|
||||||
|
"nsfw_clickthrough": "將敏感附件和鏈接隱藏,點擊才能打開",
|
||||||
|
"valid_until": "有效期至",
|
||||||
|
"panelRadius": "面板",
|
||||||
|
"pause_on_unfocused": "在離開頁面時暫停時間線推送",
|
||||||
|
"notifications": "通知",
|
||||||
|
"notification_setting_filters": "過濾器",
|
||||||
|
"notification_setting_privacy": "隱私",
|
||||||
|
"notification_mutes": "要停止收到某個指定的用戶的通知,請使用靜音功能。",
|
||||||
|
"notification_blocks": "封鎖一個用戶會停掉所有他的通知,等同於取消關注。",
|
||||||
|
"enable_web_push_notifications": "啟用 web 推送通知",
|
||||||
|
"presets": "預置",
|
||||||
|
"profile_background": "配置文件背景圖",
|
||||||
|
"profile_banner": "橫幅圖片",
|
||||||
|
"profile_tab": "個人資料",
|
||||||
|
"radii_help": "設置界面邊緣的圓角 (單位:像素)",
|
||||||
|
"reply_visibility_all": "顯示所有回覆",
|
||||||
|
"autohide_floating_post_button": "自動隱藏新帖子的按鈕(移動設備)",
|
||||||
|
"saving_err": "保存設置時發生錯誤",
|
||||||
|
"saving_ok": "設置已保存",
|
||||||
|
"search_user_to_block": "搜索你想屏蔽的用戶",
|
||||||
|
"search_user_to_mute": "搜索你想要隱藏的用戶",
|
||||||
|
"security_tab": "安全",
|
||||||
|
"set_new_avatar": "設置新頭像",
|
||||||
|
"set_new_profile_background": "設置新的個人背景",
|
||||||
|
"set_new_profile_banner": "設置新的個人橫幅",
|
||||||
|
"settings": "設置",
|
||||||
|
"subject_input_always_show": "總是顯示主題框",
|
||||||
|
"subject_line_behavior": "回覆時複製主題",
|
||||||
|
"subject_line_email": "比如電郵: \"re: 主題\"",
|
||||||
|
"subject_line_noop": "不要複製",
|
||||||
|
"post_status_content_type": "發文內容類型",
|
||||||
|
"stop_gifs": "鼠標懸停時播放GIF",
|
||||||
|
"streaming": "開啟滾動到頂部時的自動推送",
|
||||||
|
"text": "文本",
|
||||||
|
"theme": "主題",
|
||||||
|
"theme_help": "使用十六進制代碼(#rrggbb)來設置主題顏色。",
|
||||||
|
"theme_help_v2_1": "你也可以通過切換複選框來覆蓋某些組件的顏色和透明。使用“清除所有”來清楚所有覆蓋設置。",
|
||||||
|
"theme_help_v2_2": "某些條目下的圖標是背景或文本對比指示器,鼠標懸停可以獲取詳細信息。請記住,使用透明度來顯示最差的情況。",
|
||||||
|
"tooltipRadius": "提醒",
|
||||||
|
"upload_a_photo": "上傳照片",
|
||||||
|
"user_settings": "用戶設置",
|
||||||
|
"values": {
|
||||||
|
"false": "否",
|
||||||
|
"true": "是"
|
||||||
|
},
|
||||||
|
"avatar_size_instruction": "推薦的頭像圖片最小的尺寸是 150x150 像素。",
|
||||||
|
"emoji_reactions_on_timeline": "在時間線上顯示繪文字互動",
|
||||||
|
"export_theme": "導出預置主題",
|
||||||
|
"filtering": "過濾",
|
||||||
|
"filtering_explanation": "所有包含以下詞彙的內容都會被隱藏,一行一個",
|
||||||
|
"follow_export": "導出關注",
|
||||||
|
"follow_export_button": "將關注導出成 csv 文件",
|
||||||
|
"follow_import": "導入關注",
|
||||||
|
"follow_import_error": "導入關注時錯誤",
|
||||||
|
"follows_imported": "關注已導入!尚需要一些時間來處理。",
|
||||||
|
"hide_attachments_in_convo": "在對話中隱藏附件",
|
||||||
|
"hide_attachments_in_tl": "在時間線上隱藏附件",
|
||||||
|
"hide_muted_posts": "不顯示被靜音的用戶的帖子",
|
||||||
|
"max_thumbnails": "最多每個帖子所能顯示的縮略圖數量",
|
||||||
|
"hide_isp": "隱藏指定實例的面板",
|
||||||
|
"preload_images": "預載圖片",
|
||||||
|
"use_one_click_nsfw": "點擊一次以打開工作場所不適宜的附件",
|
||||||
|
"hide_post_stats": "隱藏帖子的統計數據(例如:收藏的次數)",
|
||||||
|
"hide_user_stats": "隱藏用戶的統計數據(例如:關注者的數量)",
|
||||||
|
"general": "通用",
|
||||||
|
"foreground": "前景",
|
||||||
|
"blocks_tab": "封鎖",
|
||||||
|
"blocks_imported": "封鎖黑名單導入成功!需要一點時間來處理。",
|
||||||
|
"block_import_error": "導入封鎖黑名單出錯",
|
||||||
|
"block_import": "封鎖黑名單導入",
|
||||||
|
"block_export_button": "導出你的封鎖黑名單到一個 csv 文件",
|
||||||
|
"block_export": "封鎖黑名單導出",
|
||||||
|
"bio": "簡介",
|
||||||
|
"background": "背景",
|
||||||
|
"avatarRadius": "頭像",
|
||||||
|
"avatarAltRadius": "頭像(通知)",
|
||||||
|
"avatar": "頭像",
|
||||||
|
"attachments": "附件",
|
||||||
|
"attachmentRadius": "附件",
|
||||||
|
"allow_following_move": "正在關注的賬號遷移時自動重新關注",
|
||||||
|
"enter_current_password_to_confirm": "輸入你當前密碼來確認你的身份",
|
||||||
|
"security": "安全",
|
||||||
|
"app_name": "App 名稱",
|
||||||
|
"change_email_error": "修改你的電子郵箱時發生錯誤。",
|
||||||
|
"type_domains_to_mute": "搜索需要隱藏的域名",
|
||||||
|
"pad_emoji": "從繪文字選擇器插入繪文字時,在繪文字兩側插入空格",
|
||||||
|
"useStreamingApi": "實時接收發佈以及通知",
|
||||||
|
"minimal_scopes_mode": "最小發文範圍",
|
||||||
|
"scope_copy": "回覆時的複製範圍(私信是總是複製的)",
|
||||||
|
"reply_visibility_self": "只顯示發送給我的回覆",
|
||||||
|
"reply_visibility_following": "只顯示發送給我的回覆/發送給我關注的用戶的回覆",
|
||||||
|
"replies_in_timeline": "時間線中的回覆",
|
||||||
|
"revoke_token": "撤消",
|
||||||
|
"show_admin_badge": "顯示管理徽章",
|
||||||
|
"accent": "強調色",
|
||||||
|
"greentext": "前文箭頭",
|
||||||
|
"show_moderator_badge": "顯示主持人徽章",
|
||||||
|
"oauth_tokens": "OAuth代幣",
|
||||||
|
"token": "代幣",
|
||||||
|
"refresh_token": "刷新token",
|
||||||
|
"useStreamingApiWarning": "(不推薦使用,實驗性的,已知跳過文章)",
|
||||||
|
"fun": "有趣",
|
||||||
|
"notification_setting_hide_notification_contents": "隱藏推送通知中的發送者與內容信息",
|
||||||
|
"version": {
|
||||||
|
"title": "版本",
|
||||||
|
"backend_version": "後端版本",
|
||||||
|
"frontend_version": "前端版本"
|
||||||
|
},
|
||||||
|
"virtual_scrolling": "優化時間線渲染",
|
||||||
|
"import_mutes_from_a_csv_file": "從CSV文件導入靜音",
|
||||||
|
"mutes_imported": "靜音導入了!處理它們將需要一段時間。",
|
||||||
|
"mute_import": "靜音導入",
|
||||||
|
"mute_import_error": "導入靜音時出錯",
|
||||||
|
"mute_export_button": "將靜音導出到csv文件",
|
||||||
|
"mute_export": "靜音導出",
|
||||||
|
"hide_wallpaper": "隱藏實例桌布",
|
||||||
|
"reply_visibility_self_short": "只顯示對我本人的回复",
|
||||||
|
"reply_visibility_following_short": "顯示對我關注的人的回复",
|
||||||
|
"hide_all_muted_posts": "不顯示已隱藏的帖子",
|
||||||
|
"hide_media_previews": "隱藏媒體預覽",
|
||||||
|
"word_filter": "詞過濾",
|
||||||
|
"setting_changed": "與默認設置不同",
|
||||||
|
"more_settings": "更多設置",
|
||||||
|
"save": "保存更改",
|
||||||
|
"file_export_import": {
|
||||||
|
"errors": {
|
||||||
|
"invalid_file": "所選文件不是受支持的Pleroma設置備份。 沒有進行任何更改。",
|
||||||
|
"file_too_new": "不兼容的主版本:{fileMajor},此 PleromaFE(設置版本 {feMajor})過舊,無法處理",
|
||||||
|
"file_too_old": "不兼容的主版本:{fileMajor},文件版本過舊,不受支持(最小設置版本 {feMajor})",
|
||||||
|
"file_slightly_new": "檔案的小版本不同,有些設置可能無法載入"
|
||||||
|
},
|
||||||
|
"restore_settings": "從文件還原設置",
|
||||||
|
"backup_settings_theme": "備份設置和主題到文件",
|
||||||
|
"backup_settings": "備份設置到文件",
|
||||||
|
"backup_restore": "設定備份"
|
||||||
|
},
|
||||||
|
"sensitive_by_default": "默認標記發文為敏感內容",
|
||||||
|
"right_sidebar": "在右側顯示側邊欄",
|
||||||
|
"hide_shoutbox": "隱藏實例留言框"
|
||||||
|
},
|
||||||
|
"chats": {
|
||||||
|
"more": "更多",
|
||||||
|
"delete_confirm": "您確實要刪除此消息嗎?",
|
||||||
|
"error_loading_chat": "加載聊天時出了點問題。",
|
||||||
|
"error_sending_message": "發送消息時出了點問題。",
|
||||||
|
"empty_chat_list_placeholder": "您還沒有任何聊天記錄。 開始新的聊天!",
|
||||||
|
"new": "新聊天",
|
||||||
|
"empty_message_error": "無法發布空消息",
|
||||||
|
"you": "你:",
|
||||||
|
"message_user": "發消息給 {nickname}",
|
||||||
|
"delete": "刪除",
|
||||||
|
"chats": "聊天"
|
||||||
|
},
|
||||||
|
"file_type": {
|
||||||
|
"audio": "音頻",
|
||||||
|
"video": "視頻",
|
||||||
|
"image": "图片",
|
||||||
|
"file": "檔案"
|
||||||
|
},
|
||||||
|
"display_date": {
|
||||||
|
"today": "今天"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"mute_conversation": "靜音對話",
|
||||||
|
"replies_list": "回覆:",
|
||||||
|
"reply_to": "回覆",
|
||||||
|
"pin": "在個人資料置頂",
|
||||||
|
"unpin": "取消在個人資料置頂",
|
||||||
|
"favorites": "喜歡",
|
||||||
|
"repeats": "轉發",
|
||||||
|
"delete": "刪除發文",
|
||||||
|
"pinned": "置頂",
|
||||||
|
"bookmark": "書籤",
|
||||||
|
"unbookmark": "取消書籤",
|
||||||
|
"delete_confirm": "你真的想要刪除這條發文嗎?",
|
||||||
|
"unmute_conversation": "對話取消靜音",
|
||||||
|
"status_unavailable": "發文不可取得",
|
||||||
|
"copy_link": "複製發文鏈接",
|
||||||
|
"thread_muted": "静音線程",
|
||||||
|
"show_full_subject": "顯示完整標題",
|
||||||
|
"thread_muted_and_words": ",有这些字:",
|
||||||
|
"hide_full_subject": "隱藏完整標題",
|
||||||
|
"show_content": "顯示內容",
|
||||||
|
"hide_content": "隱藏內容",
|
||||||
|
"status_deleted": "該帖已被刪除",
|
||||||
|
"expand": "展开",
|
||||||
|
"external_source": "外部來源",
|
||||||
|
"nsfw": "工作不安全"
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"hours": "{0} 時",
|
||||||
|
"days_short": "{0}天",
|
||||||
|
"day_short": "{0}天",
|
||||||
|
"days": "{0} 天",
|
||||||
|
"hour": "{0} 時",
|
||||||
|
"hour_short": "{0}時",
|
||||||
|
"hours_short": "{0}時",
|
||||||
|
"years_short": "{0} y",
|
||||||
|
"now": "剛剛",
|
||||||
|
"day": "{0} 天",
|
||||||
|
"in_future": "還有 {0}",
|
||||||
|
"in_past": "{0} 之前",
|
||||||
|
"minute": "{0} 分鐘",
|
||||||
|
"minute_short": "{0} 分",
|
||||||
|
"minutes_short": "{0} 分",
|
||||||
|
"minutes": "{0} 分鐘",
|
||||||
|
"month": "{0} 月",
|
||||||
|
"months": "{0} 月",
|
||||||
|
"month_short": "{0} 月",
|
||||||
|
"months_short": "{0} 月",
|
||||||
|
"now_short": "剛剛",
|
||||||
|
"second": "{0} 秒",
|
||||||
|
"seconds": "{0} 秒",
|
||||||
|
"second_short": "{0} 秒",
|
||||||
|
"seconds_short": "{0} 秒",
|
||||||
|
"week": "{0}周",
|
||||||
|
"weeks": "{0}周",
|
||||||
|
"week_short": "{0}周",
|
||||||
|
"weeks_short": "{0}周",
|
||||||
|
"year": "{0} 年",
|
||||||
|
"years": "{0} 年",
|
||||||
|
"year_short": "{0}年"
|
||||||
|
},
|
||||||
|
"post_status": {
|
||||||
|
"media_description_error": "無法更新媒體,請重試",
|
||||||
|
"media_description": "媒體描述",
|
||||||
|
"scope": {
|
||||||
|
"unlisted": "不公開 - 不會發送到公共時間軸",
|
||||||
|
"public": "公共 - 發送到公共時間軸",
|
||||||
|
"private": "僅關注者 - 只有關注了你的人能看到",
|
||||||
|
"direct": "私信 - 只發送給被提及的用戶"
|
||||||
|
},
|
||||||
|
"scope_notice": {
|
||||||
|
"unlisted": "本條內容既不在公共時間線,也不會在所有已知網絡上可見",
|
||||||
|
"private": "關注你的人才能看到本條內容",
|
||||||
|
"public": "本條帖子可以被所有人看到"
|
||||||
|
},
|
||||||
|
"preview_empty": "空的",
|
||||||
|
"preview": "預覽",
|
||||||
|
"posting": "正在發送",
|
||||||
|
"direct_warning_to_first_only": "本條內容只有被在消息開始處提及的用戶能夠看到。",
|
||||||
|
"direct_warning_to_all": "本條內容只有被提及的用戶能夠看到。",
|
||||||
|
"account_not_locked_warning": "你的帳號沒有 {0}。任何人都可以關注你並瀏覽你的上鎖內容。",
|
||||||
|
"new_status": "發佈新發文",
|
||||||
|
"content_warning": "主題(可選)",
|
||||||
|
"content_type": {
|
||||||
|
"text/bbcode": "BBCode",
|
||||||
|
"text/markdown": "Markdown",
|
||||||
|
"text/html": "HTML",
|
||||||
|
"text/plain": "純文本"
|
||||||
|
},
|
||||||
|
"attachments_sensitive": "標記附件為敏感內容",
|
||||||
|
"account_not_locked_warning_link": "上鎖",
|
||||||
|
"default": "剛剛抵達洛杉磯。",
|
||||||
|
"empty_status_error": "不能發布沒有內容,沒有附件的發文",
|
||||||
|
"post": "發送"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"storage_unavailable": "Pleroma無法訪問瀏覽器存儲。您的登錄名或本地設置將不會保存,您可能會遇到意外問題。嘗試啟用Cookie。"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"error_fetching": "獲取更新時發生錯誤",
|
||||||
|
"conversation": "對話",
|
||||||
|
"no_retweet_hint": "這條內容僅關注者可見,或者是私信,因此不能轉發",
|
||||||
|
"collapse": "摺疊",
|
||||||
|
"load_older": "載入更早的發文",
|
||||||
|
"repeated": "已轉發",
|
||||||
|
"show_new": "顯示新內容",
|
||||||
|
"reload": "重新載入",
|
||||||
|
"up_to_date": "已是最新",
|
||||||
|
"no_more_statuses": "没有更多發文",
|
||||||
|
"no_statuses": "没有發文",
|
||||||
|
"error": "取得時間線時發生錯誤:{0}",
|
||||||
|
"socket_reconnected": "已建立實時連接",
|
||||||
|
"socket_broke": "丟失實時連接:CloseEvent代碼{0}"
|
||||||
|
},
|
||||||
|
"interactions": {
|
||||||
|
"load_older": "載入更早的互動",
|
||||||
|
"moves": "用戶遷移",
|
||||||
|
"follows": "新的關注者",
|
||||||
|
"favs_repeats": "轉發和喜歡"
|
||||||
|
},
|
||||||
|
"selectable_list": {
|
||||||
|
"select_all": "選擇全部"
|
||||||
|
},
|
||||||
|
"remote_user_resolver": {
|
||||||
|
"error": "未找到。",
|
||||||
|
"searching_for": "搜索",
|
||||||
|
"remote_user_resolver": "遠程用戶解析器"
|
||||||
|
},
|
||||||
|
"registration": {
|
||||||
|
"validations": {
|
||||||
|
"password_confirmation_match": "不能和密碼一樣",
|
||||||
|
"password_confirmation_required": "不能留空",
|
||||||
|
"password_required": "不能留空",
|
||||||
|
"email_required": "不能留空",
|
||||||
|
"fullname_required": "不能留空",
|
||||||
|
"username_required": "不能留空"
|
||||||
|
},
|
||||||
|
"fullname": "顯示名稱",
|
||||||
|
"bio_placeholder": "例如:\n你好,我是玲音。\n我是一個住在日本郊區的動畫少女。你可能在 Wired 見過我。",
|
||||||
|
"fullname_placeholder": "例如:岩倉玲音",
|
||||||
|
"username_placeholder": "例如:lain",
|
||||||
|
"new_captcha": "點擊圖片獲取新的驗證碼",
|
||||||
|
"captcha": "CAPTCHA",
|
||||||
|
"token": "邀請碼",
|
||||||
|
"registration": "註冊",
|
||||||
|
"password_confirm": "確認密碼",
|
||||||
|
"email": "電子郵箱",
|
||||||
|
"bio": "簡介",
|
||||||
|
"reason_placeholder": "此實例的註冊需要手動批准。\n請讓管理知道您為什麼想要註冊。",
|
||||||
|
"reason": "註冊理由",
|
||||||
|
"register": "註冊"
|
||||||
|
},
|
||||||
|
"user_card": {
|
||||||
|
"its_you": "就是你!!",
|
||||||
|
"media": "媒體",
|
||||||
|
"per_day": "每天",
|
||||||
|
"remote_follow": "跨站關注",
|
||||||
|
"subscribe": "訂閱",
|
||||||
|
"mute_progress": "靜音中…",
|
||||||
|
"admin_menu": {
|
||||||
|
"delete_account": "刪除賬號",
|
||||||
|
"delete_user": "刪除用戶",
|
||||||
|
"moderation": "調停",
|
||||||
|
"grant_admin": "賦予管理權限",
|
||||||
|
"revoke_admin": "撤銷管理權限",
|
||||||
|
"grant_moderator": "賦予主持人權限",
|
||||||
|
"revoke_moderator": "撤銷主持人權限",
|
||||||
|
"activate_account": "啟用賬號",
|
||||||
|
"deactivate_account": "關閉賬號",
|
||||||
|
"force_nsfw": "標記所有的帖子都是工作場合不適",
|
||||||
|
"strip_media": "從帖子裡刪除媒體文件",
|
||||||
|
"force_unlisted": "強制帖子為不公開",
|
||||||
|
"sandbox": "強制帖子為只有關注者可看",
|
||||||
|
"disable_remote_subscription": "禁止從遠程實例關注用戶",
|
||||||
|
"disable_any_subscription": "完全禁止關注用戶",
|
||||||
|
"quarantine": "從聯合實例中禁止用戶帖子"
|
||||||
|
},
|
||||||
|
"approve": "批准",
|
||||||
|
"block": "封鎖",
|
||||||
|
"blocked": "已封鎖!",
|
||||||
|
"deny": "拒絕",
|
||||||
|
"favorites": "喜歡",
|
||||||
|
"follow": "關注",
|
||||||
|
"follow_sent": "請求已發送!",
|
||||||
|
"follow_progress": "請求中…",
|
||||||
|
"follow_unfollow": "取消關注",
|
||||||
|
"followees": "正在關注",
|
||||||
|
"followers": "關注者",
|
||||||
|
"following": "正在關注!",
|
||||||
|
"follows_you": "關注了你!",
|
||||||
|
"hidden": "已隱藏",
|
||||||
|
"mention": "提及",
|
||||||
|
"message": "消息",
|
||||||
|
"mute": "靜音",
|
||||||
|
"muted": "已靜音",
|
||||||
|
"report": "報告",
|
||||||
|
"statuses": "發文",
|
||||||
|
"unsubscribe": "退訂",
|
||||||
|
"unblock": "取消封鎖",
|
||||||
|
"unblock_progress": "取消封鎖中…",
|
||||||
|
"block_progress": "封鎖中…",
|
||||||
|
"unmute": "取消靜音",
|
||||||
|
"unmute_progress": "取消靜音中…",
|
||||||
|
"hide_repeats": "隱藏轉發",
|
||||||
|
"show_repeats": "顯示轉發",
|
||||||
|
"roles": {
|
||||||
|
"moderator": "主持人",
|
||||||
|
"admin": "管理員"
|
||||||
|
},
|
||||||
|
"highlight": {
|
||||||
|
"disabled": "無突出顯示",
|
||||||
|
"solid": "單色背景",
|
||||||
|
"striped": "條紋背景",
|
||||||
|
"side": "彩條"
|
||||||
|
},
|
||||||
|
"bot": "機器人",
|
||||||
|
"edit_profile": "編輯個人資料"
|
||||||
|
},
|
||||||
|
"user_profile": {
|
||||||
|
"timeline_title": "用戶時間線",
|
||||||
|
"profile_does_not_exist": "抱歉,此個人資料不存在。",
|
||||||
|
"profile_loading_error": "抱歉,載入個人資料時出錯。"
|
||||||
|
},
|
||||||
|
"user_reporting": {
|
||||||
|
"title": "報告 {0}",
|
||||||
|
"add_comment_description": "此報告會發送給你的實例管理員。你可以在下面提供更多詳細信息解釋報告的緣由:",
|
||||||
|
"forward_to": "轉發 {0}",
|
||||||
|
"submit": "提交",
|
||||||
|
"generic_error": "當處理你的請求時,發生了一個錯誤。",
|
||||||
|
"additional_comments": "其它評論",
|
||||||
|
"forward_description": "這個賬號是從另外一個服務器。同時發送一個報告到那裡?"
|
||||||
|
},
|
||||||
|
"who_to_follow": {
|
||||||
|
"more": "更多",
|
||||||
|
"who_to_follow": "推薦關注"
|
||||||
|
},
|
||||||
|
"tool_tip": {
|
||||||
|
"media_upload": "上傳多媒體",
|
||||||
|
"repeat": "轉發",
|
||||||
|
"favorite": "喜歡",
|
||||||
|
"add_reaction": "添加互動",
|
||||||
|
"reply": "回覆",
|
||||||
|
"user_settings": "用戶設置",
|
||||||
|
"accept_follow_request": "接受關注請求",
|
||||||
|
"reject_follow_request": "拒絕關注請求",
|
||||||
|
"bookmark": "書籤"
|
||||||
|
},
|
||||||
|
"upload": {
|
||||||
|
"file_size_units": {
|
||||||
|
"B": "B",
|
||||||
|
"KiB": "KiB",
|
||||||
|
"TiB": "TiB",
|
||||||
|
"MiB": "MiB",
|
||||||
|
"GiB": "GiB"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"base": "上傳失敗。",
|
||||||
|
"file_too_big": "文件太大[{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]",
|
||||||
|
"default": "稍後再試",
|
||||||
|
"message": "上傳錯誤:{0}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"people": "人",
|
||||||
|
"hashtags": "標籤",
|
||||||
|
"person_talking": "{count} 人正在討論",
|
||||||
|
"people_talking": "{count} 人正在討論",
|
||||||
|
"no_results": "沒有搜索結果"
|
||||||
|
},
|
||||||
|
"password_reset": {
|
||||||
|
"forgot_password": "忘記密碼了?",
|
||||||
|
"password_reset": "重置密碼",
|
||||||
|
"instruction": "輸入你的電郵地址或者用戶名,我們將發送一個鏈接到你的郵箱,用於重置密碼。",
|
||||||
|
"placeholder": "你的電郵地址或者用戶名",
|
||||||
|
"check_email": "檢查你的郵箱,會有一個鏈接用於重置密碼。",
|
||||||
|
"return_home": "回到首頁",
|
||||||
|
"too_many_requests": "你觸發了嘗試的限制,請稍後再試。",
|
||||||
|
"password_reset_disabled": "密碼重置已經被禁用。請聯繫你的實例管理員。",
|
||||||
|
"password_reset_required": "您必須重置密碼才能登陸。",
|
||||||
|
"password_reset_required_but_mailer_is_disabled": "您必須重置密碼,但是密碼重置被禁用了。請聯繫您所在實例的管理員。"
|
||||||
|
},
|
||||||
|
"announcements": {
|
||||||
|
"post_error": "錯誤: {error}",
|
||||||
|
"close_error": "關閉",
|
||||||
|
"delete_action": "刪除",
|
||||||
|
"start_time_prompt": "開始時間: ",
|
||||||
|
"end_time_prompt": "結束時間: ",
|
||||||
|
"all_day_prompt": "這是全日活動",
|
||||||
|
"start_time_display": "{time} 開始",
|
||||||
|
"end_time_display": "{time} 結束",
|
||||||
|
"published_time_display": "{time} 發布",
|
||||||
|
"edit_action": "編輯",
|
||||||
|
"submit_edit_action": "送出",
|
||||||
|
"cancel_edit_action": "取消",
|
||||||
|
"inactive_message": "此公告無效",
|
||||||
|
"page_header": "公告",
|
||||||
|
"title": "公告",
|
||||||
|
"mark_as_read_action": "標示為以閱讀",
|
||||||
|
"post_placeholder": "在此輸入您的公告內容……",
|
||||||
|
"post_form_header": "發布公告",
|
||||||
|
"post_action": "發布"
|
||||||
|
}
|
||||||
|
}
|
|
@ -97,6 +97,7 @@ export const defaultState = {
|
||||||
sidebarColumnWidth: '25rem',
|
sidebarColumnWidth: '25rem',
|
||||||
contentColumnWidth: '45rem',
|
contentColumnWidth: '45rem',
|
||||||
notifsColumnWidth: '25rem',
|
notifsColumnWidth: '25rem',
|
||||||
|
emojiReactionsScale: 1.0,
|
||||||
navbarColumnStretch: false,
|
navbarColumnStretch: false,
|
||||||
greentext: true,
|
greentext: true,
|
||||||
useAtIcon: undefined, // instance default
|
useAtIcon: undefined, // instance default
|
||||||
|
@ -115,7 +116,8 @@ export const defaultState = {
|
||||||
conversationTreeAdvanced: undefined, // instance default
|
conversationTreeAdvanced: undefined, // instance default
|
||||||
conversationOtherRepliesButton: undefined, // instance default
|
conversationOtherRepliesButton: undefined, // instance default
|
||||||
conversationTreeFadeAncestors: undefined, // instance default
|
conversationTreeFadeAncestors: undefined, // instance default
|
||||||
maxDepthInThread: undefined // instance default
|
maxDepthInThread: undefined, // instance default
|
||||||
|
autocompleteSelect: undefined // instance default
|
||||||
}
|
}
|
||||||
|
|
||||||
// caching the instance default properties
|
// caching the instance default properties
|
||||||
|
@ -184,6 +186,7 @@ const config = {
|
||||||
case 'sidebarColumnWidth':
|
case 'sidebarColumnWidth':
|
||||||
case 'contentColumnWidth':
|
case 'contentColumnWidth':
|
||||||
case 'notifsColumnWidth':
|
case 'notifsColumnWidth':
|
||||||
|
case 'emojiReactionsScale':
|
||||||
applyConfig(state)
|
applyConfig(state)
|
||||||
break
|
break
|
||||||
case 'customTheme':
|
case 'customTheme':
|
||||||
|
|
|
@ -104,6 +104,7 @@ const defaultState = {
|
||||||
conversationOtherRepliesButton: 'below',
|
conversationOtherRepliesButton: 'below',
|
||||||
conversationTreeFadeAncestors: false,
|
conversationTreeFadeAncestors: false,
|
||||||
maxDepthInThread: 6,
|
maxDepthInThread: 6,
|
||||||
|
autocompleteSelect: false,
|
||||||
|
|
||||||
// Nasty stuff
|
// Nasty stuff
|
||||||
customEmoji: [],
|
customEmoji: [],
|
||||||
|
@ -122,6 +123,7 @@ const defaultState = {
|
||||||
// Feature-set, apparently, not everything here is reported...
|
// Feature-set, apparently, not everything here is reported...
|
||||||
shoutAvailable: false,
|
shoutAvailable: false,
|
||||||
pleromaChatMessagesAvailable: false,
|
pleromaChatMessagesAvailable: false,
|
||||||
|
pleromaCustomEmojiReactionsAvailable: false,
|
||||||
gopherAvailable: false,
|
gopherAvailable: false,
|
||||||
mediaProxyAvailable: false,
|
mediaProxyAvailable: false,
|
||||||
suggestionsEnabled: false,
|
suggestionsEnabled: false,
|
||||||
|
|
|
@ -840,7 +840,7 @@ const postStatus = ({
|
||||||
})
|
})
|
||||||
if (pollOptions.some(option => option !== '')) {
|
if (pollOptions.some(option => option !== '')) {
|
||||||
const normalizedPoll = {
|
const normalizedPoll = {
|
||||||
expires_in: poll.expiresIn,
|
expires_in: parseInt(poll.expiresIn, 10),
|
||||||
multiple: poll.multiple
|
multiple: poll.multiple
|
||||||
}
|
}
|
||||||
Object.keys(normalizedPoll).forEach(key => {
|
Object.keys(normalizedPoll).forEach(key => {
|
||||||
|
@ -897,7 +897,7 @@ const editStatus = ({
|
||||||
|
|
||||||
if (pollOptions.some(option => option !== '')) {
|
if (pollOptions.some(option => option !== '')) {
|
||||||
const normalizedPoll = {
|
const normalizedPoll = {
|
||||||
expires_in: poll.expiresIn,
|
expires_in: parseInt(poll.expiresIn, 10),
|
||||||
multiple: poll.multiple
|
multiple: poll.multiple
|
||||||
}
|
}
|
||||||
Object.keys(normalizedPoll).forEach(key => {
|
Object.keys(normalizedPoll).forEach(key => {
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { kebabCase } from 'lodash'
|
||||||
|
|
||||||
|
const propsToNative = props => Object.keys(props).reduce((acc, cur) => {
|
||||||
|
acc[kebabCase(cur)] = props[cur]
|
||||||
|
return acc
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
export { propsToNative }
|
|
@ -441,6 +441,7 @@ export const parseNotification = (data) => {
|
||||||
: parseUser(data.target)
|
: parseUser(data.target)
|
||||||
output.from_profile = parseUser(data.account)
|
output.from_profile = parseUser(data.account)
|
||||||
output.emoji = data.emoji
|
output.emoji = data.emoji
|
||||||
|
output.emoji_url = data.emoji_url
|
||||||
if (data.report) {
|
if (data.report) {
|
||||||
output.report = data.report
|
output.report = data.report
|
||||||
output.report.content = data.report.content
|
output.report.content = data.report.content
|
||||||
|
|
|
@ -21,8 +21,8 @@ export const applyTheme = (input) => {
|
||||||
body.classList.remove('hidden')
|
body.classList.remove('hidden')
|
||||||
}
|
}
|
||||||
|
|
||||||
const configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth }) =>
|
const configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth, emojiReactionsScale }) =>
|
||||||
({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth })
|
({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth, emojiReactionsScale })
|
||||||
|
|
||||||
const defaultConfigColumns = configColumns(defaultState)
|
const defaultConfigColumns = configColumns(defaultState)
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ const generateInput = (value, padEmoji = true) => {
|
||||||
padEmoji
|
padEmoji
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
$t: (msg) => msg
|
||||||
},
|
},
|
||||||
stubs: {
|
stubs: {
|
||||||
FAIcon: true
|
FAIcon: true
|
||||||
|
|
339
yarn.lock
339
yarn.lock
|
@ -9,6 +9,14 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jridgewell/trace-mapping" "^0.3.0"
|
"@jridgewell/trace-mapping" "^0.3.0"
|
||||||
|
|
||||||
|
"@ampproject/remapping@^2.2.0":
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
|
||||||
|
integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/gen-mapping" "^0.1.0"
|
||||||
|
"@jridgewell/trace-mapping" "^0.3.9"
|
||||||
|
|
||||||
"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0":
|
"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
|
||||||
|
@ -45,25 +53,25 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
|
||||||
integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
|
integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
|
||||||
|
|
||||||
"@babel/core@7.20.7":
|
"@babel/core@7.21.0":
|
||||||
version "7.20.7"
|
version "7.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.7.tgz#37072f951bd4d28315445f66e0ec9f6ae0c8c35f"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13"
|
||||||
integrity sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==
|
integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ampproject/remapping" "^2.1.0"
|
"@ampproject/remapping" "^2.2.0"
|
||||||
"@babel/code-frame" "^7.18.6"
|
"@babel/code-frame" "^7.18.6"
|
||||||
"@babel/generator" "^7.20.7"
|
"@babel/generator" "^7.21.0"
|
||||||
"@babel/helper-compilation-targets" "^7.20.7"
|
"@babel/helper-compilation-targets" "^7.20.7"
|
||||||
"@babel/helper-module-transforms" "^7.20.7"
|
"@babel/helper-module-transforms" "^7.21.0"
|
||||||
"@babel/helpers" "^7.20.7"
|
"@babel/helpers" "^7.21.0"
|
||||||
"@babel/parser" "^7.20.7"
|
"@babel/parser" "^7.21.0"
|
||||||
"@babel/template" "^7.20.7"
|
"@babel/template" "^7.20.7"
|
||||||
"@babel/traverse" "^7.20.7"
|
"@babel/traverse" "^7.21.0"
|
||||||
"@babel/types" "^7.20.7"
|
"@babel/types" "^7.21.0"
|
||||||
convert-source-map "^1.7.0"
|
convert-source-map "^1.7.0"
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
gensync "^1.0.0-beta.2"
|
gensync "^1.0.0-beta.2"
|
||||||
json5 "^2.2.1"
|
json5 "^2.2.2"
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
"@babel/core@^7.12.3":
|
"@babel/core@^7.12.3":
|
||||||
|
@ -150,6 +158,16 @@
|
||||||
"@jridgewell/gen-mapping" "^0.3.2"
|
"@jridgewell/gen-mapping" "^0.3.2"
|
||||||
jsesc "^2.5.1"
|
jsesc "^2.5.1"
|
||||||
|
|
||||||
|
"@babel/generator@^7.21.0":
|
||||||
|
version "7.21.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd"
|
||||||
|
integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.21.0"
|
||||||
|
"@jridgewell/gen-mapping" "^0.3.2"
|
||||||
|
"@jridgewell/trace-mapping" "^0.3.17"
|
||||||
|
jsesc "^2.5.1"
|
||||||
|
|
||||||
"@babel/helper-annotate-as-pure@^7.16.7":
|
"@babel/helper-annotate-as-pure@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
|
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
|
||||||
|
@ -299,6 +317,14 @@
|
||||||
"@babel/template" "^7.18.10"
|
"@babel/template" "^7.18.10"
|
||||||
"@babel/types" "^7.19.0"
|
"@babel/types" "^7.19.0"
|
||||||
|
|
||||||
|
"@babel/helper-function-name@^7.21.0":
|
||||||
|
version "7.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4"
|
||||||
|
integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/template" "^7.20.7"
|
||||||
|
"@babel/types" "^7.21.0"
|
||||||
|
|
||||||
"@babel/helper-get-function-arity@^7.16.7":
|
"@babel/helper-get-function-arity@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
|
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
|
||||||
|
@ -410,6 +436,20 @@
|
||||||
"@babel/traverse" "^7.20.7"
|
"@babel/traverse" "^7.20.7"
|
||||||
"@babel/types" "^7.20.7"
|
"@babel/types" "^7.20.7"
|
||||||
|
|
||||||
|
"@babel/helper-module-transforms@^7.21.0":
|
||||||
|
version "7.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz#89a8f86ad748870e3d024e470b2e8405e869db67"
|
||||||
|
integrity sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-environment-visitor" "^7.18.9"
|
||||||
|
"@babel/helper-module-imports" "^7.18.6"
|
||||||
|
"@babel/helper-simple-access" "^7.20.2"
|
||||||
|
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||||
|
"@babel/helper-validator-identifier" "^7.19.1"
|
||||||
|
"@babel/template" "^7.20.7"
|
||||||
|
"@babel/traverse" "^7.21.0"
|
||||||
|
"@babel/types" "^7.21.0"
|
||||||
|
|
||||||
"@babel/helper-optimise-call-expression@^7.18.6":
|
"@babel/helper-optimise-call-expression@^7.18.6":
|
||||||
version "7.18.6"
|
version "7.18.6"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
|
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
|
||||||
|
@ -591,14 +631,14 @@
|
||||||
"@babel/traverse" "^7.18.9"
|
"@babel/traverse" "^7.18.9"
|
||||||
"@babel/types" "^7.18.9"
|
"@babel/types" "^7.18.9"
|
||||||
|
|
||||||
"@babel/helpers@^7.20.7":
|
"@babel/helpers@^7.21.0":
|
||||||
version "7.20.7"
|
version "7.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce"
|
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e"
|
||||||
integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==
|
integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/template" "^7.20.7"
|
"@babel/template" "^7.20.7"
|
||||||
"@babel/traverse" "^7.20.7"
|
"@babel/traverse" "^7.21.0"
|
||||||
"@babel/types" "^7.20.7"
|
"@babel/types" "^7.21.0"
|
||||||
|
|
||||||
"@babel/highlight@^7.0.0":
|
"@babel/highlight@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
|
@ -666,6 +706,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
|
||||||
integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
|
integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
|
||||||
|
|
||||||
|
"@babel/parser@^7.21.0":
|
||||||
|
version "7.21.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.1.tgz#a8f81ee2fe872af23faea4b17a08fcc869de7bcc"
|
||||||
|
integrity sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==
|
||||||
|
|
||||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
|
||||||
version "7.18.6"
|
version "7.18.6"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
|
||||||
|
@ -1138,13 +1183,13 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.18.6"
|
"@babel/helper-plugin-utils" "^7.18.6"
|
||||||
|
|
||||||
"@babel/plugin-transform-runtime@7.19.6":
|
"@babel/plugin-transform-runtime@7.21.0":
|
||||||
version "7.19.6"
|
version "7.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8"
|
||||||
integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==
|
integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-module-imports" "^7.18.6"
|
"@babel/helper-module-imports" "^7.18.6"
|
||||||
"@babel/helper-plugin-utils" "^7.19.0"
|
"@babel/helper-plugin-utils" "^7.20.2"
|
||||||
babel-plugin-polyfill-corejs2 "^0.3.3"
|
babel-plugin-polyfill-corejs2 "^0.3.3"
|
||||||
babel-plugin-polyfill-corejs3 "^0.6.0"
|
babel-plugin-polyfill-corejs3 "^0.6.0"
|
||||||
babel-plugin-polyfill-regenerator "^0.4.1"
|
babel-plugin-polyfill-regenerator "^0.4.1"
|
||||||
|
@ -1293,10 +1338,10 @@
|
||||||
"@babel/types" "^7.4.4"
|
"@babel/types" "^7.4.4"
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
"@babel/register@7.18.9":
|
"@babel/register@7.21.0":
|
||||||
version "7.18.9"
|
version "7.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c"
|
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.21.0.tgz#c97bf56c2472e063774f31d344c592ebdcefa132"
|
||||||
integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==
|
integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==
|
||||||
dependencies:
|
dependencies:
|
||||||
clone-deep "^4.0.1"
|
clone-deep "^4.0.1"
|
||||||
find-cache-dir "^2.0.0"
|
find-cache-dir "^2.0.0"
|
||||||
|
@ -1304,10 +1349,10 @@
|
||||||
pirates "^4.0.5"
|
pirates "^4.0.5"
|
||||||
source-map-support "^0.5.16"
|
source-map-support "^0.5.16"
|
||||||
|
|
||||||
"@babel/runtime@7.20.7":
|
"@babel/runtime@7.21.0":
|
||||||
version "7.20.7"
|
version "7.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
|
||||||
integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
|
integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.13.11"
|
regenerator-runtime "^0.13.11"
|
||||||
|
|
||||||
|
@ -1450,6 +1495,22 @@
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
|
||||||
|
"@babel/traverse@^7.21.0":
|
||||||
|
version "7.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.0.tgz#0e1807abd5db98e6a19c204b80ed1e3f5bca0edc"
|
||||||
|
integrity sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "^7.18.6"
|
||||||
|
"@babel/generator" "^7.21.0"
|
||||||
|
"@babel/helper-environment-visitor" "^7.18.9"
|
||||||
|
"@babel/helper-function-name" "^7.21.0"
|
||||||
|
"@babel/helper-hoist-variables" "^7.18.6"
|
||||||
|
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||||
|
"@babel/parser" "^7.21.0"
|
||||||
|
"@babel/types" "^7.21.0"
|
||||||
|
debug "^4.1.0"
|
||||||
|
globals "^11.1.0"
|
||||||
|
|
||||||
"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49":
|
"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49":
|
||||||
version "7.2.2"
|
version "7.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e"
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e"
|
||||||
|
@ -1509,6 +1570,15 @@
|
||||||
"@babel/helper-validator-identifier" "^7.19.1"
|
"@babel/helper-validator-identifier" "^7.19.1"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@babel/types@^7.21.0":
|
||||||
|
version "7.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.0.tgz#1da00d89c2f18b226c9207d96edbeb79316a1819"
|
||||||
|
integrity sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-string-parser" "^7.19.4"
|
||||||
|
"@babel/helper-validator-identifier" "^7.19.1"
|
||||||
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@babel/types@^7.7.4":
|
"@babel/types@^7.7.4":
|
||||||
version "7.7.4"
|
version "7.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
|
||||||
|
@ -1548,36 +1618,36 @@
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@fortawesome/fontawesome-common-types@6.2.1":
|
"@fortawesome/fontawesome-common-types@6.3.0":
|
||||||
version "6.2.1"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz#411e02a820744d3f7e0d8d9df9d82b471beaa073"
|
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz#51f734e64511dbc3674cd347044d02f4dd26e86b"
|
||||||
integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==
|
integrity sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==
|
||||||
|
|
||||||
"@fortawesome/fontawesome-svg-core@6.2.1":
|
"@fortawesome/fontawesome-svg-core@6.3.0":
|
||||||
version "6.2.1"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz#e87e905e444b5e7b715af09b64d27b53d4c8f9d9"
|
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz#b6a17d48d231ac1fad93e43fca7271676bf316cf"
|
||||||
integrity sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==
|
integrity sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@fortawesome/fontawesome-common-types" "6.2.1"
|
"@fortawesome/fontawesome-common-types" "6.3.0"
|
||||||
|
|
||||||
"@fortawesome/free-regular-svg-icons@6.2.1":
|
"@fortawesome/free-regular-svg-icons@6.3.0":
|
||||||
version "6.2.1"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.2.1.tgz#650e56d937755a8341f2eef258ecb6f95458820f"
|
resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.3.0.tgz#286f87f777e6c96af59151e86647c81083029ee2"
|
||||||
integrity sha512-wiqcNDNom75x+pe88FclpKz7aOSqS2lOivZeicMV5KRwOAeypxEYWAK/0v+7r+LrEY30+qzh8r2XDaEHvoLsMA==
|
integrity sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@fortawesome/fontawesome-common-types" "6.2.1"
|
"@fortawesome/fontawesome-common-types" "6.3.0"
|
||||||
|
|
||||||
"@fortawesome/free-solid-svg-icons@6.2.1":
|
"@fortawesome/free-solid-svg-icons@6.3.0":
|
||||||
version "6.2.1"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz#2290ea5adcf1537cbd0c43de6feb38af02141d27"
|
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.3.0.tgz#d3bd33ae18bb15fdfc3ca136e2fea05f32768a65"
|
||||||
integrity sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==
|
integrity sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@fortawesome/fontawesome-common-types" "6.2.1"
|
"@fortawesome/fontawesome-common-types" "6.3.0"
|
||||||
|
|
||||||
"@fortawesome/vue-fontawesome@3.0.2":
|
"@fortawesome/vue-fontawesome@3.0.3":
|
||||||
version "3.0.2"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz#1b2ec546caab790c38d3dcb38407485a70703dd2"
|
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz#633e2998d11f7d4ed41f0d5ea461a22ec9b9d034"
|
||||||
integrity sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==
|
integrity sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==
|
||||||
|
|
||||||
"@humanwhocodes/config-array@^0.11.8":
|
"@humanwhocodes/config-array@^0.11.8":
|
||||||
version "0.11.8"
|
version "0.11.8"
|
||||||
|
@ -1695,6 +1765,14 @@
|
||||||
"@types/yargs" "^17.0.8"
|
"@types/yargs" "^17.0.8"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
|
|
||||||
|
"@jridgewell/gen-mapping@^0.1.0":
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
|
||||||
|
integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/set-array" "^1.0.0"
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||||
|
|
||||||
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
|
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
|
||||||
version "0.3.2"
|
version "0.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
|
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
|
||||||
|
@ -1704,12 +1782,17 @@
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||||
"@jridgewell/trace-mapping" "^0.3.9"
|
"@jridgewell/trace-mapping" "^0.3.9"
|
||||||
|
|
||||||
|
"@jridgewell/resolve-uri@3.1.0":
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
||||||
|
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
||||||
|
|
||||||
"@jridgewell/resolve-uri@^3.0.3":
|
"@jridgewell/resolve-uri@^3.0.3":
|
||||||
version "3.0.5"
|
version "3.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
|
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
|
||||||
integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
|
integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
|
||||||
|
|
||||||
"@jridgewell/set-array@^1.0.1":
|
"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
||||||
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
|
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
|
||||||
|
@ -1722,6 +1805,11 @@
|
||||||
"@jridgewell/gen-mapping" "^0.3.0"
|
"@jridgewell/gen-mapping" "^0.3.0"
|
||||||
"@jridgewell/trace-mapping" "^0.3.9"
|
"@jridgewell/trace-mapping" "^0.3.9"
|
||||||
|
|
||||||
|
"@jridgewell/sourcemap-codec@1.4.14":
|
||||||
|
version "1.4.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||||
|
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||||
|
|
||||||
"@jridgewell/sourcemap-codec@^1.4.10":
|
"@jridgewell/sourcemap-codec@^1.4.10":
|
||||||
version "1.4.11"
|
version "1.4.11"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
|
||||||
|
@ -1743,6 +1831,14 @@
|
||||||
"@jridgewell/resolve-uri" "^3.0.3"
|
"@jridgewell/resolve-uri" "^3.0.3"
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||||
|
|
||||||
|
"@jridgewell/trace-mapping@^0.3.17":
|
||||||
|
version "0.3.17"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
|
||||||
|
integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/resolve-uri" "3.1.0"
|
||||||
|
"@jridgewell/sourcemap-codec" "1.4.14"
|
||||||
|
|
||||||
"@jridgewell/trace-mapping@^0.3.9":
|
"@jridgewell/trace-mapping@^0.3.9":
|
||||||
version "0.3.14"
|
version "0.3.14"
|
||||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
|
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
|
||||||
|
@ -2172,10 +2268,12 @@
|
||||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
|
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
|
||||||
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
|
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
|
||||||
|
|
||||||
"@vue/test-utils@2.2.7":
|
"@vue/test-utils@2.2.8":
|
||||||
version "2.2.7"
|
version "2.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.2.7.tgz#0d93d635031a4cca2de70b825aef3fe20a41e702"
|
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.2.8.tgz#2002a2b2c90309f66c5c175b735621438832a610"
|
||||||
integrity sha512-BMuoruUFTEqhLoOgsMcgNVMiByYbfHCKGr2C4CPdGtz/affUtDVX5zr1RnPuq0tYSiaqq+Enw5voUpG6JY8Q7g==
|
integrity sha512-/R8DKzp41Ip/RqTt1jvOVi5gxby3EwNWiYHNYsG9FAjEvt0gzDvYN55lCKzX7IdnI5zVIOo5tHtts0SLT+JrWw==
|
||||||
|
dependencies:
|
||||||
|
js-beautify "1.14.6"
|
||||||
|
|
||||||
"@vuelidate/core@2.0.0":
|
"@vuelidate/core@2.0.0":
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
@ -2325,6 +2423,11 @@ abab@^2.0.5, abab@^2.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
|
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
|
||||||
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
|
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
|
||||||
|
|
||||||
|
abbrev@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||||
|
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||||
|
|
||||||
accepts@~1.3.4:
|
accepts@~1.3.4:
|
||||||
version "1.3.7"
|
version "1.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||||
|
@ -2603,10 +2706,10 @@ axios@^1.1.3:
|
||||||
form-data "^4.0.0"
|
form-data "^4.0.0"
|
||||||
proxy-from-env "^1.1.0"
|
proxy-from-env "^1.1.0"
|
||||||
|
|
||||||
babel-loader@9.1.0:
|
babel-loader@9.1.2:
|
||||||
version "9.1.0"
|
version "9.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.0.tgz#839e9ae88aea930864ef9ec0f356dfca96ecf238"
|
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c"
|
||||||
integrity sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==
|
integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==
|
||||||
dependencies:
|
dependencies:
|
||||||
find-cache-dir "^3.3.2"
|
find-cache-dir "^3.3.2"
|
||||||
schema-utils "^4.0.0"
|
schema-utils "^4.0.0"
|
||||||
|
@ -3135,7 +3238,7 @@ combined-stream@^1.0.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
commander@^2.20.0:
|
commander@^2.19.0, commander@^2.20.0:
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
@ -3168,6 +3271,14 @@ concat-map@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
|
|
||||||
|
config-chain@^1.1.13:
|
||||||
|
version "1.1.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
|
||||||
|
integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
|
||||||
|
dependencies:
|
||||||
|
ini "^1.3.4"
|
||||||
|
proto-list "~1.2.1"
|
||||||
|
|
||||||
connect-history-api-fallback@2.0.0:
|
connect-history-api-fallback@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
|
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
|
||||||
|
@ -3731,6 +3842,16 @@ dotenv@10.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
|
||||||
integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
|
integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
|
||||||
|
|
||||||
|
editorconfig@^0.15.3:
|
||||||
|
version "0.15.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
|
||||||
|
integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
|
||||||
|
dependencies:
|
||||||
|
commander "^2.19.0"
|
||||||
|
lru-cache "^4.1.5"
|
||||||
|
semver "^5.6.0"
|
||||||
|
sigmund "^1.0.1"
|
||||||
|
|
||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
|
@ -4123,10 +4244,10 @@ eslint-webpack-plugin@3.2.0:
|
||||||
normalize-path "^3.0.0"
|
normalize-path "^3.0.0"
|
||||||
schema-utils "^4.0.0"
|
schema-utils "^4.0.0"
|
||||||
|
|
||||||
eslint@8.32.0:
|
eslint@8.33.0:
|
||||||
version "8.32.0"
|
version "8.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.32.0.tgz#d9690056bb6f1a302bd991e7090f5b68fbaea861"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.33.0.tgz#02f110f32998cb598c6461f24f4d306e41ca33d7"
|
||||||
integrity sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==
|
integrity sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint/eslintrc" "^1.4.1"
|
"@eslint/eslintrc" "^1.4.1"
|
||||||
"@humanwhocodes/config-array" "^0.11.8"
|
"@humanwhocodes/config-array" "^0.11.8"
|
||||||
|
@ -4661,6 +4782,17 @@ glob@^7.2.3:
|
||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@^8.0.3:
|
||||||
|
version "8.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
|
||||||
|
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^5.0.1"
|
||||||
|
once "^1.3.0"
|
||||||
|
|
||||||
global-modules@^2.0.0:
|
global-modules@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
|
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
|
||||||
|
@ -5077,6 +5209,11 @@ inherits@2.0.4, inherits@^2.0.4:
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
|
|
||||||
|
ini@^1.3.4:
|
||||||
|
version "1.3.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||||
|
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||||
|
|
||||||
ini@^1.3.5:
|
ini@^1.3.5:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||||
|
@ -5475,6 +5612,16 @@ jest-worker@^29.1.2:
|
||||||
merge-stream "^2.0.0"
|
merge-stream "^2.0.0"
|
||||||
supports-color "^8.0.0"
|
supports-color "^8.0.0"
|
||||||
|
|
||||||
|
js-beautify@1.14.6:
|
||||||
|
version "1.14.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.6.tgz#b23ca5d74a462c282c7711bb51150bcc97f2b507"
|
||||||
|
integrity sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==
|
||||||
|
dependencies:
|
||||||
|
config-chain "^1.1.13"
|
||||||
|
editorconfig "^0.15.3"
|
||||||
|
glob "^8.0.3"
|
||||||
|
nopt "^6.0.0"
|
||||||
|
|
||||||
js-cookie@3.0.1:
|
js-cookie@3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414"
|
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414"
|
||||||
|
@ -5588,6 +5735,11 @@ json5@^2.2.0, json5@^2.2.1:
|
||||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
|
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
|
||||||
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
|
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
|
||||||
|
|
||||||
|
json5@^2.2.2:
|
||||||
|
version "2.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
|
||||||
|
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
|
||||||
|
|
||||||
jsonc-eslint-parser@^1.0.1:
|
jsonc-eslint-parser@^1.0.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-1.4.1.tgz#8cbe99f6f5199acbc5a823c4c0b6135411027fa6"
|
resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-1.4.1.tgz#8cbe99f6f5199acbc5a823c4c0b6135411027fa6"
|
||||||
|
@ -6110,6 +6262,14 @@ lower-case@^2.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.3"
|
tslib "^2.0.3"
|
||||||
|
|
||||||
|
lru-cache@^4.1.5:
|
||||||
|
version "4.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||||
|
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
|
||||||
|
dependencies:
|
||||||
|
pseudomap "^1.0.2"
|
||||||
|
yallist "^2.1.2"
|
||||||
|
|
||||||
lru-cache@^5.1.1:
|
lru-cache@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
|
||||||
|
@ -6478,10 +6638,10 @@ nightwatch-axe-verbose@^2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
axe-core "^4.6.1"
|
axe-core "^4.6.1"
|
||||||
|
|
||||||
nightwatch@2.6.10:
|
nightwatch@2.6.11:
|
||||||
version "2.6.10"
|
version "2.6.11"
|
||||||
resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-2.6.10.tgz#eda82a6a0ff0002fdbeb9d160938d3c53a92dd88"
|
resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-2.6.11.tgz#ba36d13855b003b488b74f64b4ffd8d13a5d1807"
|
||||||
integrity sha512-nn5HVEtETLQ8qgu7APAZKg/yXTBkMflwdmzhfywP8mZUfKk0/dRQbeDqY2RawHr/sYsFmZV6eMirlJaaQoQ7Yw==
|
integrity sha512-HLi9gTgcxqlDWfgZ/jT1QP8g3SzjBMZlFNdiDm065dopXR95jvyIpjA0Js8MsWRYzSTkRLGZvPVk28dwGaGXcQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nightwatch/chai" "5.0.2"
|
"@nightwatch/chai" "5.0.2"
|
||||||
"@nightwatch/html-reporter-template" "0.1.4"
|
"@nightwatch/html-reporter-template" "0.1.4"
|
||||||
|
@ -6541,6 +6701,13 @@ node-releases@^2.0.5, node-releases@^2.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
|
||||||
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
|
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
|
||||||
|
|
||||||
|
nopt@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
|
||||||
|
integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
|
||||||
|
dependencies:
|
||||||
|
abbrev "^1.0.0"
|
||||||
|
|
||||||
normalize-package-data@^2.5.0:
|
normalize-package-data@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||||
|
@ -7293,6 +7460,11 @@ process-nextick-args@~2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
||||||
|
|
||||||
|
proto-list@~1.2.1:
|
||||||
|
version "1.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
||||||
|
integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
|
||||||
|
|
||||||
proxy-addr@~2.0.7:
|
proxy-addr@~2.0.7:
|
||||||
version "2.0.7"
|
version "2.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
||||||
|
@ -7310,6 +7482,11 @@ prr@~1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||||
|
|
||||||
|
pseudomap@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||||
|
integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
|
||||||
|
|
||||||
psl@^1.1.33:
|
psl@^1.1.33:
|
||||||
version "1.9.0"
|
version "1.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
|
||||||
|
@ -7322,10 +7499,10 @@ pump@^3.0.0:
|
||||||
end-of-stream "^1.1.0"
|
end-of-stream "^1.1.0"
|
||||||
once "^1.3.1"
|
once "^1.3.1"
|
||||||
|
|
||||||
punycode.js@2.1.0:
|
punycode.js@2.3.0:
|
||||||
version "2.1.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.1.0.tgz#f3937f7a914152c2dc17e9c280a2cf86a26b7cda"
|
resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.0.tgz#6aaa35964ffecc676545995ecb65980bd8302f61"
|
||||||
integrity sha512-LvGUJ9QHiESLM4yn8JuJWicstRcJKRmP46psQw1HvCZ9puLFwYMKJWvkAkP3OHBVzNzZGx/D53EYJrIaKd9gZQ==
|
integrity sha512-AM9kSplQQCRlRkRZzx2EcqW2AQ9HuYoUzzl/tjJDNJEUeYHFGJ/rGE0a9cE1b41iuFz94pAwcEekC137Dd9Eyw==
|
||||||
|
|
||||||
punycode@1.3.2:
|
punycode@1.3.2:
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
|
@ -7881,6 +8058,11 @@ side-channel@^1.0.4:
|
||||||
get-intrinsic "^1.0.2"
|
get-intrinsic "^1.0.2"
|
||||||
object-inspect "^1.9.0"
|
object-inspect "^1.9.0"
|
||||||
|
|
||||||
|
sigmund@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
|
||||||
|
integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==
|
||||||
|
|
||||||
signal-exit@^3.0.2:
|
signal-exit@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
|
@ -9043,6 +9225,11 @@ y18n@^5.0.5:
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||||
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
||||||
|
|
||||||
|
yallist@^2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||||
|
integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
|
||||||
|
|
||||||
yallist@^3.0.2:
|
yallist@^3.0.2:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||||
|
|
読み込み中…
新しいイシューから参照