Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 1x 1x 1x 1x 1x 8x 8x 8x 8x 8x 8x 8x 8x 1x 1x 1x 1x 1x 1x 26x 1x 1x 1x 26x 16x 26x 1x 1x 5x 5x 5x 4x 5x 5x 5x 1x 1x 38x 38x 38x 38x 38x 10x 38x 1x 1x 16x 15x 15x 16x 1x 1x 31x 29x 31x 1x 1x 68x 68x 14x 68x 1x 1x 15x 14x 14x 14x 15x 1x 1x 16x 16x 1x 1x 13x 13x 1x 1x 1x 1x 1x 1x 2x 1x 3x 1x 1x 1x 1x 3x 1x 1x 1x 2x 1x | import { InternalStaty, rawValue } from './internal.js'
import { actions, action } from '../action.js'
export class SetStaty extends InternalStaty {
constructor (...args) {
super(...args)
this._reverse = new Map(this.source.entries())
this._addHandler = this._addHandler.bind(this)
this._deleteHandler = this._deleteHandler.bind(this)
this._clearHandler = this._clearHandler.bind(this)
this._hasHandler = this._hasHandler.bind(this)
}
forEach (callback) {
this.target.forEach(callback)
}
onGetSnapshot (target, prop, value) {
if (prop === 'add' || prop === 'delete' || prop === 'clear') {
this.onReadOnly(target, prop, value)
return () => {}
}
if (typeof value === 'function') return value.bind(target)
return value
}
clone () {
const x = this.target
const tmp = new Set()
x.forEach(function (val) {
tmp.add(rawValue(val))
})
return tmp
}
handler (value, prop) {
if (prop === 'add') return this._addHandler
if (prop === 'delete') return this._deleteHandler
if (prop === 'clear') return this._clearHandler
if (prop === 'has') return this._hasHandler
if (typeof value === 'function') return value.bind(this.target)
return value
}
reflectSet (target, prop, value, useBaseReflect) {
if (useBaseReflect) return Reflect.set(target, prop, value)
this._reverse.set(prop, value)
return !!target.add(value)
}
reflectHas (target, prop, useBaseReflect) {
if (useBaseReflect) return Reflect.has(target, prop)
return this._reverse.has(prop)
}
reflectGet (target, prop, useBaseReflect) {
if (useBaseReflect) return Reflect.get(target, prop)
if (this._reverse.has(prop)) return prop
return undefined
}
reflectDeleteProperty (target, prop, useBaseReflect) {
if (useBaseReflect) return Reflect.deleteProperty(target, prop)
const val = this._reverse.get(prop)
this._reverse.delete(prop)
return target.delete(val)
}
_addHandler (val) {
return this._set(this.target, val, val)
}
_deleteHandler (val) {
return this._deleteProperty(this.target, val)
}
_hasHandler (val) {
return this._reverse.has(val)
}
_clearHandler () {
if (actions.current) {
this.target.forEach(value => {
this._deleteHandler(value)
})
} else {
action(() => {
this.target.forEach(value => {
this._deleteHandler(value)
})
})
}
}
}
|