Extends
Constructor
new ve.dm.InternalListNode([element], [children])
#
DataModel internal list node.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
element |
Object |
optional |
Reference to element in linear model |
children |
Array.<ve.dm.Node> |
optional |
Methods
adjustLength(adjustment)
#
Adjust the length.
This should only be called after a relevant change to the document data. Calling this method will not change the document data.
Parameters:
Name | Type | Description |
---|---|---|
adjustment |
number | Amount to adjust length by |
- Inherited from:
- Source:
Throws:
-
Invalid adjustment error if resulting length is less than 0
- Type
- Error
canBeMergedWith(node) → {boolean}
#
Check if the node can be merged with another.
For two nodes to be mergeable, the two nodes must either be the same node or:
- Are comparable according to #compareForMerging (by default, have the same type)
- Have the same depth
- Have similar ancestry (each node upstream must have the same type)
Parameters:
Name | Type | Description |
---|---|---|
node |
ve.dm.Node | Node to consider merging with |
- Inherited from:
- Source:
Returns:
Nodes can be merged
- Type
- boolean
canContainContent()
#
- Inherited from:
- Source:
- See:
canHaveChildren()
#
- Inherited from:
- Source:
- See:
canHaveChildrenNotContent()
#
- Inherited from:
- Source:
- See:
canHaveSlugAfter() → {boolean}
#
Check if the node can have a slug after it.
- Inherited from:
- Source:
Returns:
Whether the node can have a slug after it
- Type
- boolean
canHaveSlugBefore() → {boolean}
#
Check if the node can have a slug before it.
- Inherited from:
- Source:
Returns:
Whether the node can have a slug before it
- Type
- boolean
compareAttributes(attributes) → {boolean}
#
Check if specific attributes match those in the node
Parameters:
Name | Type | Description |
---|---|---|
attributes |
Object | Node attributes to match |
- Inherited from:
- Source:
Returns:
Attributes sepcified match those in the node
- Type
- boolean
compareForMerging(otherNode) → {boolean}
#
Compare with another node for merging (see #canBeMergedWidth)
The default implementation just compares node types.
Parameters:
Name | Type | Description |
---|---|---|
otherNode |
ve.dm.Node | Other node to compare with |
- Inherited from:
- Source:
Returns:
Nodes are comparable
- Type
- boolean
Compare with another node for merging (see #canBeMergedWidth)
The default implementation just compares node types.
findMatchingAncestor(type, [attributes]) → {ve.dm.Node|null
}
#
null
}
#
Find the first ancestor with matching type and attribute values.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
type |
string | Node type to match |
|
attributes |
Object |
optional |
Node attributes to match |
- Inherited from:
- Source:
Returns:
Ancestor with matching type and attribute values
- Type
-
ve.dm.Node
|
null
getAnnotationRanges() → {Array.<ve.dm.ElementLinearData.AnnotationRange>}
#
Get all annotations and the ranges they cover
- Inherited from:
- Source:
Returns:
Contiguous annotation ranges, ordered by start then end
getAttribute(key) → {any}
#
Get the value of an attribute.
Return value is by reference if array or object.
Parameters:
Name | Type | Description |
---|---|---|
key |
string | Name of attribute to get |
- Inherited from:
- Source:
Returns:
Value of attribute, or undefined if no such attribute exists
- Type
- any
getAttributes([prefix]) → {Object}
#
Get a copy of all attributes.
Values are by reference if array or object, similar to using the getAttribute method.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
prefix |
string |
optional |
Only return attributes with this prefix, and remove the prefix from them |
- Inherited from:
- Source:
Returns:
Attributes
- Type
- Object
getChildNodeTypes()
#
- Inherited from:
- Source:
- See:
getClonedElement(preserveGenerated, resetAttributes) → {Object}
#
Parameters:
Name | Type | Description |
---|---|---|
preserveGenerated |
boolean | Preserve internal.generated property of element |
resetAttributes |
boolean | Reset attributes for an empty clone, as defined in #static-resetForClone |
- Inherited from:
- Source:
- See:
Returns:
Cloned element object
- Type
- Object
getElement() → {Object}
#
Get a reference to the linear model element.
- Inherited from:
- Source:
Returns:
Linear model element passed to the constructor, by reference
- Type
- Object
getHashObject() → {Object}
#
getLength()
#
- Inherited from:
- Source:
- See:
getOffset()
#
- Inherited from:
- Source:
- See:
getOriginalDomElements(store) → {Array.<HTMLElement>}
#
Get the DOM element(s) this model was originally converted from, if any.
Parameters:
Name | Type | Description |
---|---|---|
store |
ve.dm.HashValueStore | Hash value store where the DOM elements are stored |
- Inherited from:
- Source:
Returns:
DOM elements this model was converted from, empty if not applicable
- Type
- Array.<HTMLElement>
getOriginalDomElementsHash() → {string|undefined
}
#
undefined
}
#
Get the DOM element(s) this model was originally converted from, if any.
- Inherited from:
- Source:
Returns:
Store hash of DOM elements this model was converted from
- Type
-
string
|
undefined
getParentNodeTypes()
#
- Inherited from:
- Source:
- See:
getStore() → {ve.dm.HashValueStore}
#
Get a reference to the hash-value store used by the element.
- Inherited from:
- Source:
Returns:
Hash-value store
- Type
- ve.dm.HashValueStore
getSuggestedParentNodeTypes()
#
- Inherited from:
- Source:
- See:
getType() → {string}
#
Get the symbolic name of this model's type.
- Inherited from:
- Source:
Returns:
Type name
- Type
- string
handlesOwnChildren()
#
- Inherited from:
- Source:
- See:
hasMatchingAncestor(type, [attributes]) → {boolean}
#
Check if the node has an ancestor with matching type and attribute values.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
type |
string | Node type to match |
|
attributes |
Object |
optional |
Node attributes to match |
- Inherited from:
- Source:
Returns:
Node has an ancestor with matching type and attribute values
- Type
- boolean
hasSignificantWhitespace()
#
- Inherited from:
- Source:
- See:
hasSlugAtOffset(offset) → {boolean}
#
Check in the branch node has a slug at a particular offset
Parameters:
Name | Type | Description |
---|---|---|
offset |
number | Offset to check for a slug at |
- Inherited from:
- Source:
Returns:
There is a slug at the offset
- Type
- boolean
isAlignable()
#
- Inherited from:
- Source:
- See:
isCellEditable()
#
- Inherited from:
- Source:
- See:
isCellable()
#
- Inherited from:
- Source:
- See:
isContent()
#
- Inherited from:
- Source:
- See:
isDiffComparable(other) → {boolean}
#
Check if this element is of the same type as another element for the purposes of diffing.
Elements which aren't of the same type will always be shown as removal and an insertion, whereas comarable elements will be shown as an attribute change.
Parameters:
Name | Type | Description |
---|---|---|
other |
Object | Another element |
- Inherited from:
- Source:
Returns:
Elements are of a comparable type
- Type
- boolean
isDiffedAsDocument()
#
- Inherited from:
- Source:
- See:
isDiffedAsLeaf()
#
- Inherited from:
- Source:
- See:
isDiffedAsList()
#
- Inherited from:
- Source:
- See:
isEditable() → {boolean}
#
Check whether this node can be edited by a context item
The default implementation always returns true. If your node type is uneditable in certain cases, you should override this function.
- Inherited from:
- Source:
Returns:
Whether this node is editable
- Type
- boolean
Check whether this node can be edited by a context item
The default implementation always returns true.
isFocusable()
#
- Inherited from:
- Source:
- See:
isInspectable() → {boolean}
#
Check whether this node can be inspected by a context item.
The default implementation always returns true. If your node type is uninspectable in certain cases, you should override this function.
- Inherited from:
- Source:
Returns:
Whether this node is inspectable
- Type
- boolean
isInternal()
#
- Inherited from:
- Source:
- See:
isMetaData()
#
- Inherited from:
- Source:
- See:
isSurfaceable() → {boolean}
#
Check if the node can be the root of a branch exposed in a ve.ce.Surface
- Inherited from:
- Source:
Returns:
Node can be the root of a surfaced branch
- Type
- boolean
isUnwrappable()
#
- Inherited from:
- Source:
- See:
isWrapped()
#
- Inherited from:
- Source:
- See:
matches(type, [attributes]) → {boolean}
#
Check if the node matches type and attribute values.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
type |
string | Node type to match |
|
attributes |
Object |
optional |
Node attributes to match |
- Inherited from:
- Source:
Returns:
Node matches type and attribute values
- Type
- boolean
pop() → {ve.dm.BranchNode|undefined
}
#
undefined
}
#
Remove a child node from the end of the list.
- Inherited from:
- Source:
Returns:
Removed childModel
- Type
-
ve.dm.BranchNode
|
undefined
push(childModel) → {number}
#
Add a child node to the end of the list.
Parameters:
Name | Type | Description |
---|---|---|
childModel |
ve.dm.BranchNode | Item to add |
- Inherited from:
- Source:
Returns:
New number of children
- Type
- number
setLength(length)
#
Set the inner length of the node.
This should only be called after a relevant change to the document data. Calling this method will not change the document data.
Parameters:
Name | Type | Description |
---|---|---|
length |
number | Length of content |
- Inherited from:
- Source:
Fires:
Throws:
-
Invalid content length error if length is less than 0
- Type
- Error
setupBlockSlugs()
#
Setup a sparse array of booleans indicating where to place slugs
TODO: The function name is misleading: in ContentBranchNodes it sets up inline slugs
- Inherited from:
- Source:
Setup a sparse array of booleans indicating where to place slugs
TODO: The function name is misleading: in ContentBranchNodes it sets up inline slugs
shift() → {ve.dm.BranchNode|undefined
}
#
undefined
}
#
Remove a child node from the beginning of the list.
- Inherited from:
- Source:
Returns:
Removed childModel
- Type
-
ve.dm.BranchNode
|
undefined
shouldIgnoreChildren()
#
- Inherited from:
- Source:
- See:
splice(index, deleteCount, […nodes]) → {Array.<ve.dm.BranchNode>}
#
Add and/or remove child nodes at an offset.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
index |
number | Index to remove and or insert nodes at |
|
deleteCount |
number | Number of nodes to remove |
|
nodes |
ve.dm.BranchNode |
optional repeatable |
Variadic list of nodes to insert |
- Inherited from:
- Source:
Returns:
Removed nodes
- Type
- Array.<ve.dm.BranchNode>
Fires:
suppressSlugType() → {string|null
}
#
null
}
#
A string identifier used to suppress slugs
If sequential nodes have the same non-null suppressSlugType, then no slug is shown, e.g. two floated images can return 'float' to suppress the slug between them.
- Inherited from:
- Source:
Returns:
Type
- Type
-
string
|
null
A string identifier used to suppress slugs
If sequential nodes have the same non-null suppressSlugType, then no slug is shown, e.g.
unshift(childModel) → {number}
#
Add a child node to the beginning of the list.
Parameters:
Name | Type | Description |
---|---|---|
childModel |
ve.dm.BranchNode | Item to add |
- Inherited from:
- Source:
Returns:
New number of children
- Type
- number
Events
attributeChange(key, oldValue, newValue)
#
Parameters:
Name | Type | Description |
---|---|---|
key |
string | |
oldValue |
any | |
newValue |
any |
- Inherited from:
- Source:
lengthChange(diff)
#
Parameters:
Name | Type | Description |
---|---|---|
diff |
number |
- Inherited from:
- Source:
splice(index, deleteCount, […nodes])
#
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
index |
number | ||
deleteCount |
number | ||
nodes |
ve.dm.BranchNode |
optional repeatable |
- Inherited from:
- Source:
- See:
update()
#
- Inherited from:
- Source: