mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-14 02:06:29 +00:00
39 lines
847 B
JavaScript
39 lines
847 B
JavaScript
(function (root, factory) {
|
|
module.exports = factory()
|
|
}(this, function () {
|
|
function getIn (object, path) {
|
|
var stack = path.split('.')
|
|
while (stack.length > 1) {
|
|
object = object[stack.shift()]
|
|
}
|
|
return object[stack.shift()]
|
|
}
|
|
|
|
function updateIn (object, path, value) {
|
|
var current = object
|
|
var stack = path.split('.')
|
|
while (stack.length > 1) {
|
|
current = current[stack.shift()]
|
|
}
|
|
current[stack.shift()] = value
|
|
return object
|
|
}
|
|
|
|
function setPartialState (component, path, value) {
|
|
component.setState(
|
|
updateIn(component.state, path, value))
|
|
}
|
|
|
|
return {
|
|
LinkedStateMixin: {
|
|
linkState: function (path) {
|
|
return {
|
|
value: getIn(this.state, path),
|
|
requestChange: setPartialState.bind(null, this, path)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}))
|