212 lines
5.3 KiB
Plaintext
212 lines
5.3 KiB
Plaintext
---
|
||
seo:
|
||
title: TinaDocs – Type Definition
|
||
title: Library (API) Example
|
||
last_edited: '2025-07-15T07:43:31.405Z'
|
||
tocIsHidden: false
|
||
---
|
||
|
||
> This example content is a random page taken from the [PlateJS documentation](https://platejs.org/docs/api/slate/location-ref).
|
||
|
||
Location references are objects that keep specific locations (paths, points, or ranges) in a document synced over time as new operations are applied to the editor.
|
||
|
||
You can access their `current` property at any time for the up-to-date location value. You can access their `current` property at any time for the up-to-date location value.
|
||
|
||
## Types
|
||
|
||
***
|
||
|
||
#### `PathRef`
|
||
|
||
Path reference objects keep a specific path in a document synced over time. Created using `editor.api.pathRef`.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "current",
|
||
description: "The current path value, updated as operations are applied.\n",
|
||
type: "Path | null",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "affinity",
|
||
description:
|
||
"The direction to prefer when transforming the path:\n\n* 'forward': Prefer the position after inserted content\n* 'backward': Prefer the position before inserted content\n* null: No preference\n",
|
||
type: "'forward' | 'backward' | null",
|
||
required: false,
|
||
experimental: false
|
||
},
|
||
{
|
||
name: "unref( )",
|
||
description:
|
||
"Call this when you no longer need to sync this path. Returns the final path value.\n",
|
||
type: "( ) => Path | null"
|
||
}
|
||
]}
|
||
/>
|
||
|
||
#### `PointRef`
|
||
|
||
Point reference objects keep a specific point in a document synced over time. Created using `editor.api.pointRef`.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "current",
|
||
description:
|
||
"The current point value, updated as operations are applied.\n",
|
||
type: "Point | null",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "affinity",
|
||
description:
|
||
"The direction to prefer when transforming the point:\n\n* 'forward': Prefer the position after inserted content\n* 'backward': Prefer the position before inserted content\n* null: No preference\n",
|
||
type: "'forward' | 'backward' | null",
|
||
required: false,
|
||
experimental: false
|
||
},
|
||
{
|
||
name: "unref( )",
|
||
description:
|
||
"Call this when you no longer need to sync this point. Returns the final point value.\n",
|
||
type: "( ) => Point | null"
|
||
}
|
||
]}
|
||
/>
|
||
|
||
#### `RangeRef`
|
||
|
||
Range reference objects keep a specific range in a document synced over time. Created using `editor.api.rangeRef`.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "current",
|
||
description:
|
||
"The current range value, updated as operations are applied.\n",
|
||
type: "TRange | null",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "affinity",
|
||
description:
|
||
"The direction to prefer when transforming the range:\n\n* 'forward': Both points prefer after inserted content\n* 'backward': Both points prefer before inserted content\n* 'inward': Range tends to stay same size when content is inserted at edges\n* 'outward': Range tends to grow when content is inserted at edges\n* null: No preference\n",
|
||
type: "'forward' | 'backward' | 'inward' | 'outward' | null",
|
||
required: false,
|
||
experimental: false
|
||
},
|
||
{
|
||
name: "unref( )",
|
||
description:
|
||
"Call this when you no longer need to sync this range. Returns the final range value.\n",
|
||
type: "( ) => TRange | null"
|
||
}
|
||
]}
|
||
/>
|
||
|
||
Example usage of a RangeRef:
|
||
|
||
```typescript
|
||
const selectionRef = editor.api.rangeRef(editor.selection, {
|
||
affinity: 'inward',
|
||
})
|
||
// Operations that might change the selection
|
||
Transforms.unwrapNodes(editor)
|
||
// Restore the selection using the ref
|
||
Transforms.select(editor, selectionRef.unref())
|
||
```
|
||
|
||
## `PathRefApi`
|
||
|
||
***
|
||
|
||
#### `transform`
|
||
|
||
Transform a path reference by an operation.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "ref",
|
||
description: "The path reference to transform.\n",
|
||
type: "PathRef",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "op",
|
||
description:
|
||
"The operation to apply. The editor calls this automatically as needed.\n",
|
||
type: "Operation",
|
||
required: true,
|
||
experimental: false
|
||
}
|
||
]}
|
||
/>
|
||
|
||
## `PointRefApi`
|
||
|
||
***
|
||
|
||
#### `transform`
|
||
|
||
Transform a point reference by an operation.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "ref",
|
||
description: "The point reference to transform.\n",
|
||
type: "PointRef",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "op",
|
||
description:
|
||
"The operation to apply. The editor calls this automatically as needed.\n",
|
||
type: "Operation",
|
||
required: true,
|
||
experimental: false
|
||
}
|
||
]}
|
||
/>
|
||
|
||
## `RangeRefApi`
|
||
|
||
***
|
||
|
||
#### `transform`
|
||
|
||
Transform a range reference by an operation.
|
||
|
||
<typeDefinition
|
||
property={[
|
||
{
|
||
name: "ref",
|
||
description: "The range reference to transform.\n",
|
||
type: "RangeRef",
|
||
required: true,
|
||
experimental: false,
|
||
typeUrl: ""
|
||
},
|
||
{
|
||
name: "op",
|
||
description:
|
||
"The operation to apply. The editor calls this automatically as needed.\n",
|
||
type: "Operation",
|
||
required: true,
|
||
experimental: false
|
||
}
|
||
]}
|
||
/>
|