Merge remote-tracking branch 'origin/develop' into appearance-tab
This commit is contained in:
commit
6846b4fe8a
|
@ -43,6 +43,8 @@ lint:
|
|||
|
||||
test:
|
||||
stage: test
|
||||
tags:
|
||||
- amd64
|
||||
variables:
|
||||
APT_CACHE_DIR: apt-cache
|
||||
script:
|
||||
|
@ -54,6 +56,8 @@ test:
|
|||
|
||||
build:
|
||||
stage: build
|
||||
tags:
|
||||
- amd64
|
||||
script:
|
||||
- yarn
|
||||
- npm run build
|
||||
|
|
1
changelog.d/ci-runner.skip
Normal file
1
changelog.d/ci-runner.skip
Normal file
|
@ -0,0 +1 @@
|
|||
stop using that one runner for intensive tasks
|
1
changelog.d/no-preserve-selection-color.fix
Normal file
1
changelog.d/no-preserve-selection-color.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Ensure selection text color has enough contrast
|
1
changelog.d/profile-mentions.fix
Normal file
1
changelog.d/profile-mentions.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix profile mentions causing a 422 error
|
1
changelog.d/themesv3-on-safari.fix
Normal file
1
changelog.d/themesv3-on-safari.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix Themes v3 on Safari not working
|
|
@ -4,6 +4,8 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
|
||||
<link rel="icon" type="image/png" href="/favicon.png">
|
||||
<style id="pleroma-eager-styles" type="text/css"></style>
|
||||
<style id="pleroma-lazy-styles" type="text/css"></style>
|
||||
<!--server-generated-meta-->
|
||||
</head>
|
||||
<body class="hidden">
|
||||
|
|
|
@ -87,7 +87,8 @@ const PostStatusForm = {
|
|||
'fileLimit',
|
||||
'submitOnEnter',
|
||||
'emojiPickerPlacement',
|
||||
'optimisticPosting'
|
||||
'optimisticPosting',
|
||||
'profileMention'
|
||||
],
|
||||
emits: [
|
||||
'posted',
|
||||
|
@ -125,7 +126,7 @@ const PostStatusForm = {
|
|||
|
||||
const { scopeCopy } = this.$store.getters.mergedConfig
|
||||
|
||||
if (this.replyTo) {
|
||||
if (this.replyTo || this.profileMention) {
|
||||
const currentUser = this.$store.state.users.currentUser
|
||||
statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ export default {
|
|||
|
||||
// Selection colors
|
||||
'--selectionBackground': 'color | --accent',
|
||||
'--selectionText': 'color | $textColor(--accent, --text)'
|
||||
'--selectionText': 'color | $textColor(--accent, --text, no-preserve)'
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -225,7 +225,7 @@ export default {
|
|||
this.$store.dispatch('setCurrentMedia', attachment)
|
||||
},
|
||||
mentionUser () {
|
||||
this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })
|
||||
this.$store.dispatch('openPostStatusModal', { profileMention: true, repliedUser: this.user })
|
||||
},
|
||||
onAvatarClickHandler (e) {
|
||||
if (this.onAvatarClick) {
|
||||
|
|
|
@ -6,6 +6,45 @@ import { getCssRules } from '../theme_data/css_utils.js'
|
|||
import { defaultState } from '../../modules/config.js'
|
||||
import { chunk } from 'lodash'
|
||||
|
||||
// On platforms where this is not supported, it will return undefined
|
||||
// Otherwise it will return an array
|
||||
const supportsAdoptedStyleSheets = !!document.adoptedStyleSheets
|
||||
|
||||
const createStyleSheet = (id) => {
|
||||
if (supportsAdoptedStyleSheets) {
|
||||
return {
|
||||
el: null,
|
||||
sheet: new CSSStyleSheet(),
|
||||
rules: []
|
||||
}
|
||||
}
|
||||
|
||||
const el = document.getElementById(id)
|
||||
// Clear all rules in it
|
||||
for (let i = el.sheet.cssRules.length - 1; i >= 0; --i) {
|
||||
el.sheet.deleteRule(i)
|
||||
}
|
||||
|
||||
return {
|
||||
el,
|
||||
sheet: el.sheet,
|
||||
rules: []
|
||||
}
|
||||
}
|
||||
|
||||
const EAGER_STYLE_ID = 'pleroma-eager-styles'
|
||||
const LAZY_STYLE_ID = 'pleroma-lazy-styles'
|
||||
|
||||
const adoptStyleSheets = (styles) => {
|
||||
if (supportsAdoptedStyleSheets) {
|
||||
document.adoptedStyleSheets = styles.map(s => s.sheet)
|
||||
}
|
||||
// Some older browsers do not support document.adoptedStyleSheets.
|
||||
// In this case, we use the <style> elements.
|
||||
// Since the <style> elements we need are already in the DOM, there
|
||||
// is nothing to do here.
|
||||
}
|
||||
|
||||
export const generateTheme = async (input, callbacks, debug) => {
|
||||
const {
|
||||
onNewRule = (rule, isLazy) => {},
|
||||
|
@ -100,13 +139,13 @@ export const tryLoadCache = () => {
|
|||
return false
|
||||
}
|
||||
if (cache.engineChecksum === getEngineChecksum()) {
|
||||
const styleSheet = new CSSStyleSheet()
|
||||
const lazyStyleSheet = new CSSStyleSheet()
|
||||
const eagerStyles = createStyleSheet(EAGER_STYLE_ID)
|
||||
const lazyStyles = createStyleSheet(LAZY_STYLE_ID)
|
||||
|
||||
cache.data[0].forEach(rule => styleSheet.insertRule(rule, 'index-max'))
|
||||
cache.data[1].forEach(rule => lazyStyleSheet.insertRule(rule, 'index-max'))
|
||||
cache.data[0].forEach(rule => eagerStyles.sheet.insertRule(rule, 'index-max'))
|
||||
cache.data[1].forEach(rule => lazyStyles.sheet.insertRule(rule, 'index-max'))
|
||||
|
||||
document.adoptedStyleSheets = [styleSheet, lazyStyleSheet]
|
||||
adoptStyleSheets([eagerStyles, lazyStyles])
|
||||
|
||||
return true
|
||||
} else {
|
||||
|
@ -116,10 +155,8 @@ export const tryLoadCache = () => {
|
|||
}
|
||||
|
||||
export const applyTheme = async (input, onFinish = (data) => {}, debug) => {
|
||||
const styleSheet = new CSSStyleSheet()
|
||||
const styleArray = []
|
||||
const lazyStyleSheet = new CSSStyleSheet()
|
||||
const lazyStyleArray = []
|
||||
const eagerStyles = createStyleSheet(EAGER_STYLE_ID)
|
||||
const lazyStyles = createStyleSheet(LAZY_STYLE_ID)
|
||||
|
||||
console.log('DEBUG IS', debug)
|
||||
|
||||
|
@ -128,19 +165,19 @@ export const applyTheme = async (input, onFinish = (data) => {}, debug) => {
|
|||
{
|
||||
onNewRule (rule, isLazy) {
|
||||
if (isLazy) {
|
||||
lazyStyleSheet.insertRule(rule, 'index-max')
|
||||
lazyStyleArray.push(rule)
|
||||
lazyStyles.sheet.insertRule(rule, 'index-max')
|
||||
lazyStyles.rules.push(rule)
|
||||
} else {
|
||||
styleSheet.insertRule(rule, 'index-max')
|
||||
styleArray.push(rule)
|
||||
eagerStyles.sheet.insertRule(rule, 'index-max')
|
||||
eagerStyles.rules.push(rule)
|
||||
}
|
||||
},
|
||||
onEagerFinished () {
|
||||
document.adoptedStyleSheets = [styleSheet]
|
||||
adoptStyleSheets([eagerStyles])
|
||||
},
|
||||
onLazyFinished () {
|
||||
document.adoptedStyleSheets = [styleSheet, lazyStyleSheet]
|
||||
const cache = { engineChecksum: getEngineChecksum(), data: [styleArray, lazyStyleArray] }
|
||||
adoptStyleSheets([eagerStyles, lazyStyles])
|
||||
const cache = { engineChecksum: getEngineChecksum(), data: [eagerStyles.rules, lazyStyles.rules] }
|
||||
onFinish(cache)
|
||||
localStorage.setItem('pleroma-fe-theme-cache', JSON.stringify(cache))
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import { sortBy } from 'lodash'
|
||||
|
||||
// "Unrolls" a tree structure of item: { parent: { ...item2, parent: { ...item3, parent: {...} } }}
|
||||
// into an array [item2, item3] for iterating
|
||||
export const unroll = (item) => {
|
||||
|
@ -24,7 +26,7 @@ export const getAllPossibleCombinations = (array) => {
|
|||
})
|
||||
const flatCombos = newCombos.reduce((acc, x) => [...acc, ...x], [])
|
||||
const uniqueComboStrings = new Set()
|
||||
const uniqueCombos = flatCombos.map(x => x.toSorted()).filter(x => {
|
||||
const uniqueCombos = flatCombos.map(sortBy).filter(x => {
|
||||
if (uniqueComboStrings.has(x.join())) {
|
||||
return false
|
||||
} else {
|
||||
|
@ -64,7 +66,7 @@ export const genericRuleToSelector = components => (rule, ignoreOutOfTreeSelecto
|
|||
}
|
||||
|
||||
const selectors = [realSelector, applicableVariant, ...applicableStates]
|
||||
.toSorted((a, b) => {
|
||||
.sort((a, b) => {
|
||||
if (a.startsWith(':')) return 1
|
||||
if (/^[a-z]/.exec(a)) return -1
|
||||
else return 0
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { convert, brightness } from 'chromatism'
|
||||
import sum from 'hash-sum'
|
||||
import { flattenDeep } from 'lodash'
|
||||
import { flattenDeep, sortBy } from 'lodash'
|
||||
import {
|
||||
alphaBlend,
|
||||
getTextColor,
|
||||
|
@ -226,7 +226,7 @@ export const init = (extraRuleset, ultimateBackgroundColor, debug) => {
|
|||
combination.variant === 'normal'
|
||||
? ''
|
||||
: combination.variant[0].toUpperCase() + combination.variant.slice(1).toLowerCase(),
|
||||
...combination.state.filter(x => x !== 'normal').toSorted().map(state => state[0].toUpperCase() + state.slice(1).toLowerCase())
|
||||
...sortBy(combination.state.filter(x => x !== 'normal')).map(state => state[0].toUpperCase() + state.slice(1).toLowerCase())
|
||||
].join('')
|
||||
|
||||
let inheritedTextColor = computedDirectives.textColor
|
||||
|
|
Loading…
Reference in a new issue