mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Merge branch 'preview-fixes'
This commit is contained in:
commit
5e2ab0e6a0
@ -89,7 +89,7 @@ import {
|
|||||||
VLoading,
|
VLoading,
|
||||||
} from '@/ui'
|
} from '@/ui'
|
||||||
import { addComponentListener } from '@/core/settings'
|
import { addComponentListener } from '@/core/settings'
|
||||||
import { deleteValue, dqa } from '@/core/utils'
|
import { dqa } from '@/core/utils'
|
||||||
import { SortableJSLibrary } from '@/core/runtime-library'
|
import { SortableJSLibrary } from '@/core/runtime-library'
|
||||||
import { SortableEvent } from 'sortablejs'
|
import { SortableEvent } from 'sortablejs'
|
||||||
import { getData } from '@/plugins/data'
|
import { getData } from '@/plugins/data'
|
||||||
@ -121,8 +121,7 @@ export default Vue.extend({
|
|||||||
open: false,
|
open: false,
|
||||||
padding: navbarOptions.padding,
|
padding: navbarOptions.padding,
|
||||||
rendered,
|
rendered,
|
||||||
// order: navbarOptions.order,
|
hidden: navbarOptions.hidden,
|
||||||
hidden: [...navbarOptions.hidden],
|
|
||||||
loaded: false,
|
loaded: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -173,13 +172,11 @@ export default Vue.extend({
|
|||||||
this.rendered.items = sortItems(rendered.items, ordersMap)
|
this.rendered.items = sortItems(rendered.items, ordersMap)
|
||||||
},
|
},
|
||||||
toggleVisible(item: CustomNavbarItem) {
|
toggleVisible(item: CustomNavbarItem) {
|
||||||
if (this.hidden.includes(item.name)) {
|
if (navbarOptions.hidden.includes(item.name)) {
|
||||||
deleteValue(this.hidden, it => it === item.name)
|
lodash.pull(navbarOptions.hidden, item.name)
|
||||||
deleteValue(navbarOptions.hidden, it => it === item.name)
|
|
||||||
item.hidden = false
|
item.hidden = false
|
||||||
console.log('delete', item.name)
|
console.log('delete', item.name)
|
||||||
} else {
|
} else {
|
||||||
this.hidden.push(item.name)
|
|
||||||
navbarOptions.hidden.push(item.name)
|
navbarOptions.hidden.push(item.name)
|
||||||
item.hidden = true
|
item.hidden = true
|
||||||
console.log('add', item.name)
|
console.log('add', item.name)
|
||||||
|
|||||||
@ -77,9 +77,15 @@ const settingsChangedHandler = (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 建立 Proxy
|
/** 标识经由 `createProxy` 控制的对象 */
|
||||||
export const isProxy = Symbol('isProxy')
|
export const isProxy = Symbol('isProxy')
|
||||||
export const createProxy = (targetObj: any, valueChangeListener: ValueChangeListener) => {
|
|
||||||
|
/**
|
||||||
|
* 为目标对象创建深层 Proxy
|
||||||
|
* @param targetObj 目标对象
|
||||||
|
* @param valueChangeListener 对象自身属性变化时的回调函数
|
||||||
|
*/
|
||||||
|
export const createProxy = (targetObj: any, valueChangeListener?: ValueChangeListener) => {
|
||||||
const applyProxy = (obj: any, rootProp?: Property, propPath: Property[] = []) => {
|
const applyProxy = (obj: any, rootProp?: Property, propPath: Property[] = []) => {
|
||||||
for (const [key, value] of Object.entries(obj)) {
|
for (const [key, value] of Object.entries(obj)) {
|
||||||
if (typeof value === 'object' && !(value instanceof RegExp)) {
|
if (typeof value === 'object' && !(value instanceof RegExp)) {
|
||||||
@ -94,21 +100,39 @@ export const createProxy = (targetObj: any, valueChangeListener: ValueChangeList
|
|||||||
return o[prop]
|
return o[prop]
|
||||||
},
|
},
|
||||||
set(o, prop, value) {
|
set(o, prop, value) {
|
||||||
if (/* !(prop in o) && */typeof value === 'object'
|
const oldValue = o[prop]
|
||||||
|
const isImplicitProp = (
|
||||||
|
!Object.prototype.hasOwnProperty.call(o, prop) && oldValue !== undefined
|
||||||
|
)
|
||||||
|
if (unsafeWindow.proxyDebug) {
|
||||||
|
console.log({ isImplicitProp, prop, value })
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 是否对 value 启用深层 Proxy
|
||||||
|
* - 是 Object (或 Array)
|
||||||
|
* - 不能是 RegExp
|
||||||
|
* - 不能是已经启用过的
|
||||||
|
* - 不能是上游原型链里的
|
||||||
|
*/
|
||||||
|
const deep = (
|
||||||
|
typeof value === 'object'
|
||||||
&& !(value instanceof RegExp)
|
&& !(value instanceof RegExp)
|
||||||
&& !(value[isProxy] === true)
|
&& !(value[isProxy] === true)
|
||||||
) {
|
&& !isImplicitProp
|
||||||
|
)
|
||||||
|
if (deep) {
|
||||||
value = applyProxy(value, rootProp || prop, [...propPath, prop])
|
value = applyProxy(value, rootProp || prop, [...propPath, prop])
|
||||||
}
|
}
|
||||||
const oldValue = o[prop]
|
|
||||||
o[prop] = value
|
o[prop] = value
|
||||||
valueChangeListener(value, oldValue, rootProp || prop, [...propPath, prop])
|
if (!isImplicitProp) {
|
||||||
|
valueChangeListener?.(value, oldValue, rootProp || prop, [...propPath, prop])
|
||||||
|
}
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
deleteProperty(o, prop) {
|
deleteProperty(o, prop) {
|
||||||
const oldValue = o[prop]
|
const oldValue = o[prop]
|
||||||
delete o[prop]
|
delete o[prop]
|
||||||
valueChangeListener(undefined, oldValue, rootProp || prop, [...propPath, prop])
|
valueChangeListener?.(undefined, oldValue, rootProp || prop, [...propPath, prop])
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user