Home Reference Source Repository
import ObjectProperty from 'f.lux/src/ObjectProperty.js'
public class | source

ObjectProperty

Extends:

Property → ObjectProperty

A generic object property type that supports keyed child properties access.

The default shadow class is Shadow.

Use ObjectProperty when you want to place a full custom API on a javascript object or just want an object without any methods. By default, properties can be accessed/updated using dot syntax and the shadow does not provide any access or property manipulation methods.

The _keyed instance variable exposes a KeyedApi instance for working with properties. Readonly properties cannot be updated using the shadow so the this._keyed is used set the value or remove it from the object. For example,

this._keyed.set("updated", Date());

would set the updated shadow property with a string value for the current time.

See:

Static Method Summary

Static Public Methods
public static

createClass(shadowType: Object | Shadow, typeCallback: function(type: StateType), initialState: Object): ObjectProperty

Factory function for creating an ObjectProperty subclass.

public static

defineType(PropClass: ObjectProperty, ShadowType: Object | Shadow, typeCallback: function(type: StateType), initialState: Object)

Factory function for setting up the StateType type class variable with an appropriately configured intial state.

Constructor Summary

Public Constructor
public

constructor(stateType: StateType)

If a StateType is not passed to this constructor then one is located using StateType.from thus ensuring the f.lux shadowing process is defined for this property.

Inherited Summary

From class Property
public
public
public
public

[_checkpoint]: {"data": *}

public

[_impl]: *

public
public

[_mixins]: *[]

public
public

[_pid]: *

public
public
public
public
public

Use this.$$() in shadow methods to get access to the property.

public

Gets if autoshadowing is enabled for this property.

public

Copies the current actual state for later reset using Property#resetToCheckpoint.

public

Clears an existing checkpoint created using Property#checkpoint.

public

create$(impl: *): Access

Creates the object to be assigned to the shadow.$ property.

public

Gets the path from root property using a dot (.) separator.

public

Gets the checkpoint state previously recorded using Property#checkpoint.

public

getInitialState(state: *): *

Gets the initial state for a property at the beginning of the property mounting process.

public

Gets if an existing checkpoint has be created using Property#checkpoint.

public

Gets the result from StateType#computeInitialState.

public

Gets if the property is currently shadowing an actual state property.

public

Gets if property is an actual isolated property managed by the store.

public

Gets if the property allows for assignment through the shadow state, ie todo.desc = "go skiing".

public

Gets if this is the shadow state root property.

public

The property name by which this property is referenced by the Property.parent.

public

nextState(): *

Gets what the actual state for this property will be after the Store updates all pending actions.

public

Gets the object containing or managing this property.

public

Gets the parent property.

public

Gets the parent's shadow property.

public

path(): []

Gets the Property#name components from the root property to this property.

public

pid(): number

Gets the unique f.lux ID for this property.

public

propertyChildInvalidated(childProperty: Property, sourceProperty: Property)

A child property or one of its descendents wil be changing state.

public

Invoked by the f.lux shadowing process after a property initially shadows a state property.

public

Invoked by the f.lux shadowing process after a property is reshadowed.

public

Invoked by the f.lux shadowing process just before a property initially shadows a state property.

public

Invoked by the f.lux shadowing process just before a property will be removed from the shadow state.

public

Replaces the current property state with a checkpoint state previously recorded using Property#checkpoint.

public

Gets the shadow state root property for the Store managing this property.

public

Gets the root shadow state for the Store managing this property.

public

Sets the auto shadow property flag.

public

setImplementationClass(ImplClass: *)

public

Explicitly sets an initial state that will be used if the state tree does not have a value for this property.

public

setReadonly(readonly: *)

Sets the readonly flag which will prevent an assignment from changing the value.

public

setShadowClass(ShadowClass: Shadow)

Sets the class to be used for the shadow api

public

shader(state: *): *

Gets the Shader instance for this property.

public

Returns the Shadow subclass used to virtualize the state property.

public

Gets the path from root property using a slash (/) separator.

public

state(): *

Gets the actual state being shadowed.

public

stateType(): *

Gets the StateType used for creating this property.

public

store(): *

Gets the {@Link Store} containing the application state.

public

touch()

Triggers a reshadow of the properties shadow state.

public

typeName(): *

Gets this property's StateType.typeName value.

public

update(callback: function)

Makes changes to the next proeprty state.

Static Public Methods

public static createClass(shadowType: Object | Shadow, typeCallback: function(type: StateType), initialState: Object): ObjectProperty source

Factory function for creating an ObjectProperty subclass. The generated class will have the type StateType descriptor set upon return.

Example usage:

class UiShadow extends Shadow {
// definition here
}

export default ObjectProperty.createClass(UiShadow, type => {
// configure type variable
});

Params:

NameTypeAttributeDescription
shadowType Object | Shadow
  • optional
  • default: {}

Shadow subclass or object literal api definition. If object literal specified, each property and function is mapped onto a Shadow subclass.

typeCallback function(type: StateType)
  • optional

a callback function that will be passed the StateType spec for additional customization, such as setting autoshadow, initial state, or readonly.

initialState Object
  • optional

={} - the initial state for the new property.

Return:

ObjectProperty

newly defined ObjectProperty subclass.

public static defineType(PropClass: ObjectProperty, ShadowType: Object | Shadow, typeCallback: function(type: StateType), initialState: Object) source

Factory function for setting up the StateType type class variable with an appropriately configured intial state.

Example usage:

export default class TodoProperty extends ObjectProperty {
// implement property here
}

class TodoShadow extends Shadow {
// implement shadow api here
}

ObjectProperty.defineType(TodoProperty, TodoShadow, type => {
// configure type variable
});

Params:

NameTypeAttributeDescription
PropClass ObjectProperty

ObjectProperty subclass

ShadowType Object | Shadow
  • optional

Shadow` subclass or object literal api definition. If object literal specified, each property and function is mapped onto a Shadow subclass.

typeCallback function(type: StateType)
  • optional

a callback function that will be passed the StateType spec for additional customization, such as setting autoshadow, initial state, or readonly.

initialState Object
  • optional
  • default: {}

the initial state for the new property.

Public Constructors

public constructor(stateType: StateType) source

If a StateType is not passed to this constructor then one is located using StateType.from thus ensuring the f.lux shadowing process is defined for this property.

Override:

Property#constructor

Params:

NameTypeAttributeDescription
stateType StateType
  • optional

a specialized StateType instance describing how f.lux should shadow this property.