Each user has a set of space configurations (tabs). They can name these tabs and the url configuration will be as follows: nounspace.com/s/[username]/[tab name] The default name of the starting space will be "My Space" If someone accesses just the user, the default tab shown will be the first in the list - the user can rearrange the order of the tabs at will.
Configs consist of:
Unique ID (tab name)
List of Fidgets + Fidget Locations
Editable Boolean (authentication set at the page level)
Spaces will have an edit mode which is enabled by the 'Editable' variable.
Space Config:
typeFidgetInstanceConfig= { editable:boolean;// Both size and settings type values are actually constrained// by the related FidgetEditConfig size: { height:NumericRange<1,36>; width:NumericRange<1,36>; };// Settings are the Fidget specific config settings: { [key:string]:any; };}typeFidgetFieldConfig= {readonly fieldName:string;readonlyvalidator?: (value) =>boolean;// InputSelectorComponent is any component in the valid// set of allowed input typesreadonly inputSelector:InputSelectorComponent;readonly default?:any;readonly required:boolean;}typeFidgetEditConfig= { fields:FidgetFieldConfig[]; size: {// NumericRange is a helper type that generates a set of valid// values in the range inclusive on both ends minHeight:NumericRange<1,36>; maxHeight:NumericRange<1,36>; minWidth:NumericRange<1,36>; maxWidth:NumericRange<1,36>; }}typeFigdgetConfig= { editConfig:FidgetEditConfig; instanceConfig:FidgetInstanceConfig;}typeLayoutConfig= { [key:FidgetID]: { x:NumericRange<1,36>; y:NumericRange<1,36>; };}typeFidgetId=string;typeSpaceConfig= {readonly ID:FidgetID; fidgetConfig:FidgetConfig[]; layout:LayoutConfig; editable:boolean;}