BlockSuite API Documentation / @blocksuite/store / Y / RelativePosition
Class: RelativePosition
A relative position is based on the Yjs model and is not affected by document changes. E.g. If you place a relative position before a certain character, it will always point to this character. If you place a relative position at the end of a type, it will always point to the end of the type.
A numeric position is often unsuited for user selections, because it does not change when content is inserted before or after.
Insert(0, 'x')('a|bc') = 'xa|bc'
Where | is the relative position.
One of the properties must be defined.
Example
// Current cursor position is at position 10
const relativePosition = createRelativePositionFromIndex(yText, 10)
// modify yText
yText.insert(0, 'abc')
yText.delete(3, 10)
// Compute the cursor position
const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)
absolutePosition.type === yText // => true
console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3
Constructors
new RelativePosition()
new RelativePosition(
type
,tname
,item
,assoc
?):RelativePosition
Parameters
• type: null
| ID
• tname: null
| string
• item: null
| ID
• assoc?: number
Returns
Source
node_modules/.pnpm/yjs@13.6.15/node_modules/yjs/dist/src/utils/RelativePosition.d.ts:32
Properties
assoc
assoc:
number
A relative position is associated to a specific character. By default assoc >= 0, the relative position is associated to the character after the meant position. I.e. position 1 in 'ab' is associated to character 'b'.
If assoc < 0, then the relative position is associated to the caharacter before the meant position.
Source
node_modules/.pnpm/yjs@13.6.15/node_modules/yjs/dist/src/utils/RelativePosition.d.ts:56
item
item:
null
|ID
Source
node_modules/.pnpm/yjs@13.6.15/node_modules/yjs/dist/src/utils/RelativePosition.d.ts:44
tname
tname:
null
|string
Source
node_modules/.pnpm/yjs@13.6.15/node_modules/yjs/dist/src/utils/RelativePosition.d.ts:40
type
type:
null
|ID
Source
node_modules/.pnpm/yjs@13.6.15/node_modules/yjs/dist/src/utils/RelativePosition.d.ts:36